数据库
首页 > 数据库> > mysql-如何在同一查询中两次联接1个表并将结果分开

mysql-如何在同一查询中两次联接1个表并将结果分开

作者:互联网

我们正在构建一个调度程序系统,并且在几种情况下我们试图从表中获取一些注释以进行显示.我们已经查看了其他答案,但似乎没有一个与这个问题完全匹配.

预订表包含对客户注释(如果存在)和造型师注释(如果存在)的数字引用.

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_array [‘note’]

我们还希望能够做的就是获得该预订的造型师注释,例如$results_array [‘stylist_note’].

这次我们如何使用以下方法再次加入注释表:

LEFT JOIN notes ON bookings.stylistNotes = notes.notesID

但是能够独立于客户注释而参考这些造型师注释.

非常感谢您的协助.

解决方法:

您应该能够为表和列添加别名:

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

标签:join,left-join,normalization,mysql
来源: https://codeday.me/bug/20191210/2099293.html