我如何在这个方案的mysql中进行连接查询

时间:2016-07-30 13:21:29

标签: mysql join

我在尝试从一个查询中获取此数据库中的所有数据时遇到了一些麻烦。

以下是Database scheme

我知道有一种方法可以通过加入来实现这一点,但我不确定如何做到这一点。 我需要来自问卷调查,预订和客户的所有数据。 我想我必须加入预订客户,但我不确定。

目前我有这样的事情

SELECT * 
FROM Booking,Questionaires,Customers 
WHERE accepted = 0 
JOIN ON Booking_idBooking = Customers_idCustomers

任何人都可以帮助我吗?

事先谢谢!

3 个答案:

答案 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在您的架构中是复数。它们应该是一致的。此外,idBookingbooking_idBooking之类的内容也不是很好 - 可能会使用idbooking_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