簡體   English   中英

SQL-在多個表上聯接

[英]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

但是,一旦我嘗試檢索更多列,它就會開始重復行。

  • 調制解調器有1行,其中MID = 1。
  • ModemsImage有2行,其中MID = 1。
  • ModemsPckg有2行,其中MID = 1。

您通過MID將它們全部連接起來,因此得到:

  • 調制解調器第一行+調制解調器圖像第一行+調制解調器Pckghave第一行
  • 調制解調器第一行+調制解調器圖像第一行+調制解調器Pckghave第二行
  • 調制解調器第一行+調制解調器圖像第二行+調制解調器Pckghave第一行
  • 調制解調器第一行+調制解調器圖像第二行+調制解調器Pckghave第二行

你為什么還要期待什么呢?

您需要在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM