これがあまりにも基本的であるならば申し訳ありませんが、私はそれを解決することができません。それに関する情報を検索する方法もわかりません:
私は3つのテーブルを持っています:
プロバイダー
id_provider name
---------- -----------
100 John
101 Sam
102 Peter
連絡先
id_contact RowNo Email
---------- ----------- ----------------
100 1 [email protected]
100 2 [email protected]
101 1 [email protected]
101 2 [email protected]
製品
Id_product RowNo Product
---------- ----------- ------------------------
100 1 John’s 1st product
100 2 John’s 2nd product
101 1 Sam’s 1st product
101 2 Sam’s 2nd product
101 3 Sam’s 3rd product
次のように、3つのテーブルのすべてのデータを表示するクエリが必要です。
Id name id_contact RowNo Email Id_Product RowNo Product
100 John 100 1 [email protected] 100 1 John’s 1st product
100 John 100 2 [email protected] 100 2 John’s 2st product
101 Sam 101 1 [email protected] 101 1 Sam's 1st product
101 Sam 101 2 [email protected] 101 2 Sam's 2nd product
101 Sam null null null 101 3 Sam's 3rd product
102 Peter null null null null null null
知っているすべての結合を試していますが、機能させることができません。
どうもありがとう
次のクエリを使用できます。
SELECT t1.id_provider AS Id, t1.name,
t2.id_contact, t2.cRowNo, t2.Email,
t2.Id_product, t2.Product
FROM Provider AS t1
LEFT JOIN (
SELECT COALESCE(id_contact, id_product) AS id,
c.id_contact, c.RowNo AS cRowNo, c.Email,
p.Id_product, p.Product, p.RowNo AS pRowNo
FROM Contact AS c
FULL JOIN Product AS p ON p.id_product = c.id_contact AND p.RowNo = c.RowNo
) AS t2 ON t1.id_provider = t2.id
クエリがないFULL JOIN
間Contact
やProduct
テーブルや由来テーブル合流FULL JOIN
にProvider
テーブルを。
FULL JOIN
2つのテーブル、Contact
またはのどちらProduct
にそれぞれの行が最も多いかを事前に知ることができないため、Aが必要ですid
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加