【问题标题】:How to join 1 table twice in the same query and keep results separate如何在同一个查询中两次加入 1 个表并保持结果分开
【发布时间】:2023-03-28 22:04:01
【问题描述】:

我们正在构建一个调度程序系统,并且在一些情况下,我们试图从表格中获取一些要显示的笔记。我们查看了其他答案,但似乎没有一个与这个问题完全匹配。

bookings 表包含对客户备注(如果存在)和造型师备注(如果存在)的数字引用。

notes 表包含客户和造型师备注,每个备注都由唯一的数字索引索引

当我们只想阅读客户注释时,我们的查询已经工作了:

SELECT bookings.bookingID, UNIX_TIMESTAMP(bookings.startDate) AS start_date, UNIX_TIMESTAMP(bookings.endDate) as end_date, clientDetails.firstName, clientDetails.lastName, clientDetails.phone1, clientDetails.phone2, clientDetails.email, services.name, services.serviceID, cNotes.note as client_notes, sNotes.note as stylist_note
FROM bookings 
LEFT JOIN clientDetails ON bookings.clientID = clientDetails.clientID
LEFT JOIN services ON bookings.serviceID = services.serviceID
LEFT JOIN notes ON bookings.clientNotes = notes.notesID
WHERE bookings.startDate >= '" . $start_date . "' AND  bookings.endDate <= '" . $end_date . "' AND bookings.stylistID = '" . $stylist_id . "'
ORDER BY bookings.startDate ASC;

使用这个逻辑,我们可以从 php 中的 results 数组中访问 c​​ient 笔记,就像:$results_array['note']

我们还希望能够获得该预订的造型师备注,例如 $results_array['stylist_note']。

这次我们如何再次加入笔记表:

LEFT JOIN notes ON bookings.stylistNotes = notes.notesID

但可以将这些造型师备注与客户备注分开引用。

非常感谢您的帮助。

【问题讨论】:

    标签: mysql join normalization left-join


    【解决方案1】:

    您应该能够为表和列设置别名:

    SELECT ..., stylistnotes.note AS stylist_note
    FROM ...
    LEFT JOIN notes stylistnotes ON bookings.stylistNotes = stylistnotes.notesID
    

    【讨论】:

    • 谢谢您 - 这为我们解决了问题!我会给你打分,但我还不能这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多