[英]SQL- Join on multiple tables
我有3個SQL表:modems,ModemsImage和ModemsPckg
+----+-------+----------+
| MID| Name | Desc |
+----+-------+----------+
| 1 |RNO-505|Wifi Modem|
+-----------------------+
+--- -+----+---------+
| MIID| MID| ICON |
+-- --+----+---------+
| 1 |1 |Cloud.png|
+-- --+----+---------+
| 2 |1 |Wire.png |
+--------------------+
+-----+--------+------------+-----+---+
|MPKID|PckgName|PDesc |Price|MID|
+-----+--------+------------+-----+---+
|1 |basic |Starter Pckg|20.5 |1 |
+-----+--------+------------+-----+---+
|2 |Enhanced|advance pckg|66.5 |1 |
+-------------------------------------+
我想要的最終結果:
+----+-------+----------+-----+---------+-----+--------+------------+-----+
| MID| Name | Desc | MIID| ICON |MPKID|PckgName|PDesc |Price|
+-----------------------+-----+---------+-----+--------+------------+-----+
| 1 |RNO-505|Wifi Modem| 1 |Cloud.png|1 |basic |Starter Pckg|20.5 |
+-----------------------+-----+---------+-----+--------+------------+-----+
| 1 |RNO-505|Wifi Modem| 2 |Wire.png |2 |Enhanced|advance pckg|66.5 |
+-------------------------------------------------------------------------+
我正在使用此查詢:
select * from modems a join ModemsImage b on a.mid=b.mid join ModemsPckg c on a.mid=c.mid
但這不會給我正確的輸出,它返回的重復記錄只是MPKID不同。 謝謝編輯::當我使用時,此查詢它向我展示了完美的2條記錄
select c.MPKID from modems a join ModemsImage b on a.mid=b.mid join ModemsPckg c on a.mid=c.mid group by c.MPKID
但是,一旦我嘗試檢索更多列,它就會開始重復行。
您通過MID將它們全部連接起來,因此得到:
你為什么還要期待什么呢?
您需要在ModemsImage和ModemsPckg上添加其他條件。 例如:
select * from modems a
INNER JOIN ModemsImage b on a.mid=b.mid
INNER JOIN ModemsPckg c on a.mid=c.mid AND b.MIID=c.MPKID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.