我有一組三個表:MySQL:跨多個表的多列連接?
Dining_Tables; +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | dining_table | int(11) | NO | PRI | NULL | | | bus_boy | varchar(35) | NO | | NULL | | | waiter | varchar(35) | NO | | NULL | | | server | varchar(35) | NO | | NULL | | +--------------------+--------------+------+-----+---------+-------+ Poker_Tables; +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | poker_table | int(11) | NO | PRI | NULL | | | dealer | varchar(35) | NO | | NULL | | | pit_boss | varchar(35) | NO | | NULL | | +--------------------+--------------+------+-----+---------+-------+ Computer_Tables; +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | computer_table | int(11) | NO | PRI | NULL | | | programmer | varchar(35) | NO | | NULL | | +--------------------+--------------+------+-----+---------+-------+
每行中都有一個與之關聯的全局唯一表ID:(dining_table
,poker_table
,computer_table
) 其他列存儲的人的名字/姓氏履行職責。
在我的模型中,一個人可以做多件事情。例如,喬·史密斯可能同時坐在computer_table
作爲程序員,坐在poker_table
作爲經銷商,並等待dining_table
作爲服務員。
我的問題是這樣的: 我想要一個查詢,可以讓我檢索給定人的所有table_ids
。具體來說,查詢會返回Joe Smith當前所在的列表table_ids
。
我可以做一些沿着這些路線:
select dining_table from Dining_Tables where bus_boy = "Joe Smith" or waiter = "Joe Smith" or server = "Joe Smith"; select poker_table from Poker_Tables where dealer = "Joe Smith" or pit_boss = "Joe Smith"; select computer_table from Computer_Tables where programmer = "Joe Smith";
然而,這三個單獨的查詢和我真的希望避免這樣做,如果可能的話。我可以在一個查詢中使用連接嗎?
在問題的標題中採用更爲恰當的方式是MySQL:跨多個表的多「ROW」連接?這就是您首先要求的......您並未合併兩個或更多用條件選擇「列」。 – Victor 2013-08-04 01:01:45