我在尝试从一个查询中获取此数据库中的所有数据时遇到了一些麻烦。
我知道有一种方法可以通过加入来实现这一点,但我不确定如何做到这一点。 我需要来自问卷调查,预订和客户的所有数据。 我想我必须加入预订客户,但我不确定。
目前我有这样的事情
SELECT *
FROM Booking,Questionaires,Customers
WHERE accepted = 0
JOIN ON Booking_idBooking = Customers_idCustomers
任何人都可以帮助我吗?
事先谢谢!
答案 0 :(得分:0)
你可以这样使用内连接
SELECT * FROM Booking_idBooking as BB
INNER JOIN Booking as B on BB.Booking_idBooking = B.idBooking
INNER JOIN Customers as C on BB.Customers_idCustomers = C.idCustomers
INNER JOIN Questionaires as Q on Q.idQuestionaires = B.uestionaires_idQuestionaires
WHERE B.accepted = 0 ;
答案 1 :(得分:0)
我会做这样的事情,但根据你的具体情况你可能需要左连接。
select
*
from
customers c
inner join booking_has_customers bhs on
bhs.Customers_idCustomers = c.idCustomers
inner join booking b on
b.idBooking = booking_idBooking
inner join Questionaires q on
q.idQuestionaires = b.Questionairs_idQuestionairs
where
b.accepted = 0;
请注意,您应该真正更改命名约定。
例如booking
是单数,但customers
在您的架构中是复数。它们应该是一致的。此外,idBooking
和booking_idBooking
之类的内容也不是很好 - 可能会使用id
和booking_id
。无论如何只是建议。
您可能还想花些时间学习如何编写联接。结帐link to relevant Django doc以获取良好示例。
答案 2 :(得分:0)
SELECT b.*,q.*,c.*
FROM Booking AS b
JOIN Questionaries AS q ON q.idQuestionaries=b.Questionaries_idQuestionaries
JOIN Booking_has_Customers AS bhc ON bhc.Booking_idBooking=b.idBooking
JOIN Customers AS c ON c.idCustomers=bhs.Customers_idCustomers
WHERE b.accepted=0
但是来吧,将ID名称更改为简单ID,您将拥有:
SELECT b.*,q.*,c.*
FROM Booking AS b
JOIN Questionaries AS q ON q.id=b.id
JOIN Booking_has_Customers AS bhc ON bhc.id=b.id
JOIN Customers AS c ON c.id=bhs.id
WHERE b.accepted=0