我有很多表与主键字段结合在一起。我可以查询以下内容以获得所需的结果。
Select *
from orders
Left Join serviceorders on orders.contractLineID = serviceorders.lineID
Left Join all_orders on orders.OrderNum = all_orders.ordernum
Left Join invoices on orders.OrderNum = invoices.OrderNum
Left Join schedule on orders.OrderNum = schedule.Ordernum;
但是当我尝试从中创建视图时,我面对重复的列,因为我要连接的每个表中都有ordernum。
我知道我不应该使用*来选择所有内容,但是我不知道从多个表中选择列的语法吗?
是吗?
SELECT orders.column1, orders.column2 schedule.column1, schedule.column 2, invoice.column1, invoice.column2
FROM orders, schedule, invoice
我也看到过您可以使用USING命令,但是其语法尚不清楚。我不确定这是否是更好的选择,因为它只是在所有表中重复的一列。
答案 0 :(得分:1)
语法如下:
body {
display: grid;
grid-template-rows: 50px auto 50px;
height: 100vh;
margin: 0;
}
main {
display: grid;
grid-auto-rows: 200px;
overflow: auto;
background-color: gray;
}
main > article:nth-child(even) {
background-color: aqua;
}
header { background-color: lightgreen; }
main { background-color: orangered; }
footer { background-color: gray; }
body { font-size: 1.1em; margin: 0; }
这是如果您需要视图同时具有两个ID和唯一的名称。更好的是,仅选择所需的列。
答案 1 :(得分:0)
首先,学习使用别名。其次,您应该列出所有列:
Select o.col1, o.col2, so.col3, -- list columns you want explicitly
ao.col3 as ao_col3 -- if you still have duplicates, assign new names
from orders o left join
serviceorders so
on o.contractLineID = so.lineID left join
all_orders ao
on o.OrderNum = ao.ordernum left join
invoices i
on o.OrderNum = i.OrderNum left join
schedule s
on o.OrderNum = s.Ordernum;