English 中文(简体)
在MySQL选择一个客户家庭的情况
原标题:Selecting 1 Instance of a Client s family in MySQL
  • 时间:2011-08-01 20:19:27
  •  标签:
  • mysql

我需要从询问中回来的是去年访问过的家庭户主及其所有亲属的名单。 每个人都在客户表中,在被询问时,会与其他表格合并。

问题是,每有一个独一无二的日期,家庭成员就返回“一类”。 我希望获得一系列类似结果(我略去一些栏目来澄清):

Head of household                Relative/child
----------------------------     ---------------------
John Smith -                     Katie Smith
John Smith                       Joe Smith
Tim Jones                        Mike Jones
Tim Jones                        Sally Jones
Kevin Barnett                    Corey Barnett
Kevin Barnett                    Cara Barnett
Kevin Barnett                    Austin Barnett




SELECT f.HeadOfHouseholdID,
  CONCAT( c.lastname,   ,  , c.firstname ) AS   HName ,
  v.Datevisited, f.RelationshipID, c2.ClientID,
  CONCAT( c2.lastname,   ,  , c2.firstname ) AS   Relative Name 
FROM client c
INNER JOIN clientfamily f ON c.ClientID = f.HeadOfHouseholdID
JOIN visits v ON c.clientid = v.clientID
JOIN client c2 ON c2.clientid = f.relativeID
WHERE v.datevisited BETWEEN CURDATE( ) - INTERVAL 1 YEAR AND CURDATE( )

! [成果] 页: 1

最佳回答

一位同事表示:

SELECT f.HeadOfHouseholdID  HOHID ,
    CONCAT( c.Lastname,  ,  , c.FirstName ) AS  Head of Household ,
    c.PhoneNumber AS  HOH Phone ,
    f.RelativeID,
    CONCAT( C2.Lastname,  ,  , C2.FirstName ) AS  Relative ,
    Relationship.Description AS  Relation ,
    C2.PhoneNumber AS  Relative Phone , C2.DOB,
    (
            (
            DATE_FORMAT( NOW( ) ,  %Y  ) - DATE_FORMAT( C2.DOB,  %Y  )
            ) -
            ( DATE_FORMAT( NOW( ) ,  00-%m-%d  ) < DATE_FORMAT( C2.DOB,  00-%m-%d  ) )
    ) AS Age
    FROM client c
    INNER JOIN clientfamily f ON c.clientid = f.headofhouseholdid
    JOIN (
            SELECT ClientID, MAX( DateVisited ) AS  DateVisited 
            FROM Visits
            GROUP BY ClientID
    ) v ON c.clientid = v.clientid
    JOIN client c2 ON c2.clientid = f.relativeid
    JOIN Relationship ON f.RelationshipID = Relationship.RelationshipID
    WHERE v.datevisited
            BETWEEN CURDATE( ) - INTERVAL 1 YEAR
            AND CURDATE( ) 
问题回答

暂无回答




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签