dqhgjay5753 2014-07-05 13:02
浏览 20
已采纳

双SQL查询 - JOIN

I need a double SELECT sql query from 2 different tables with names visits & items 1.: SELECT visitid, visitdate, visitreason FROM visits WHERE personid = 10 2.: SELECT itemid, itemname, itemtime FROM items WHERE itemvisitid= visitid I think I need to do a JOIN but don’t know exactly how.

Table examples:

Table: visits

visitid | personid | visitdate  | visitreason
1       | 10       | 05/07/2014 | no reason
2       | 10       | 06/07/2014 | some reason
3       | 12       | 06/07/2014 | no reason
4       | 10       | 12/07/2014 | some other reason

Table: items

itemid | personid | itemvisitid | itemname | itemtime
1      |   10     |  2          | box      | 23
2      |   10     |  2          | clock    | 70            
3      |   10     | null        | water    | 50
4      |   10     | null        | paper    | 40
5      |   12     | 3           | box      | 26    

What I have now is this:

$query = "SELECT visitid, visitdate, visitreason FROM visits WHERE personid = '10' ORDER BY visitdate DESC";

// 2nd select: "SELECT itemid, itemname, itemtime FROM items WHERE itemvisitid= visitid";

    $db->setQuery($query);
    $results = $db->query();
while($row = mysqli_fetch_array($results)){
    echo "<tr>
        <td>".$row['visitid'].", ".$row['visitdate']."</td>
        <td>".$row['visitreason']."</td>
        <td>".$row['itemid'].",".$row['itemname'].", ".$row['itemtime']."</td>
        </tr>";     
}

I need results to be something like this:

<tr>
    <td>1, 05/07/2014</td><td>no reason</td><td></td>
    <td>2, 06/07/2014</td><td>some reason</td><td>1, box, 23<br />2, clock, 70</td>
    <td>4, 12/07/2014</td><td>some other reason</td><td></td>
</tr>
  • 写回答

3条回答 默认 最新

  • drzyeetvt41077335 2014-07-05 13:39
    关注

    I guess your might to use GROUP_CONCAT like this:

    DEMO: http://sqlfiddle.com/#!2/9d4e22/15

    SELECT visitid, DATE_FORMAT(visitdate,'%m/%d/%Y'), visitreason,
    GROUP_CONCAT(itemid,itemname, itemtime)
    FROM visits  left join items on visits.visitid = items.itemvisitid
    WHERE visits.personid = 10 
    GROUP BY  visitid, visitdate, visitreason
    

    You might want to read this to know GROUP_CONCAT :
    How to use GROUP_CONCAT in a CONCAT in MySQL

    The document of GROUP_CONCAT() is here:
    http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat hope this helps.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向