2017-02-25 232 views
-1

这是数据库结构如何使用连接选择数据?

enter image description here

我想在PHP站点,以显示它,我不知道该如何陈述的。 我想选择AdressOrderIdOrdersFirstName LastNameclientAddress ZipCode CityOrderDescriptionOrderStatus

+0

请提供你已经尝试了一些代码。 –

+0

$ SQL = “SELECT orders.OrderID,client.FirstName,client.LastName,adress.Adress,adress.ZipCode,adress.City,orderstatus.OrderDescription从接单 \t \t \t \t \t” 只有这样做 –

+0

还等什么试图显示,只是订单中的所有OrderID列表?还有客户名字和姓氏列表? 或者你是否试图根据OrderID获取名字,姓氏,地址,ZipCode,城市和OrderDescription? –

回答

0

你要加入他们的基础上,外键在订单表和相关表中的主键。

即使缺少一个或多个相关数据(例如,如果地址不见了),也可以使用“LEFT JOIN”确保所有订单都会显示。

基于您的代码:

SELECT 
    orders.OrderID, 
    client.FirstName, 
    client.LastName, 
    adress.Adres‌​s, 
    adress.ZipCode, 
    adr‌​ess.City, 
    orderstatus‌​.OrderDescription 
FROM orders 
LEFT JOIN client ON client.ClientId = orders.ClientId 
LEFT JOIN adress ON adress.AdressId = orders.AdressID 
LEFT JOIN orderstatus‌ ON orderstatus‌.OrderStatusID = orders.OrderStatusID 

或别名:

SELECT 
    o.OrderID, 
    c.FirstName, 
    c.LastName, 
    a.Adres‌​s, 
    a.ZipCode, 
    a​.City, 
    os.OrderDescription 
FROM orders o 
LEFT JOIN client c ON c.ClientId = o.ClientId 
LEFT JOIN adress a ON a.AdressId = o.AdressID 
LEFT JOIN orderstatus‌ os ON os‌.OrderStatusID = o.OrderStatusID 
0

你想内join.try这

select 
     o.OrderId,c.FirstName,c.LastName,a.Address.a.ZipCode,a.City,od.OrderDescription 
from Orders o 
join client c using(clientid) 
join Adress a using(addressid) 
join OrderStatus od using(orderstatusid);