私が参加する必要がある4つのテーブルのデータがあります:ディメンション、dimensionresults、プロダクトとproductreportsです。私の目標は、製品に属するレポートのすべてのディメンション(NULLを含む)を選択して、ユーザーが既存の値を表示または編集したり、空のレポートの新しい値を入力できるようにすることです。4つのテーブルを結合しているmysqlがnull値を返します
これまでのところ、私が試してみました:JOINのコマンドのためにすることなく、かつ最後の結合および他のいくつかの配列に何とかSQLは、報告されていない寸法を選択しません。
SELECT d.DID, Nominal, r.`Result`, r.`PRID`
FROM `Dimensions` d
JOIN `Products` x ON d.`PID` = x.`PID`
LEFT JOIN `DimensionResults` r ON d.`DID` = r.`DID`
JOIN `ProductReports` p ON r.`PRID` = p.`PRID` AND x.`PID` = p.`PID`
WHERE r.`PRID` = 'PRID17ca-fe04-77ba-6ba8-94416f25197f'
そして、それにはいくつかのバリエーションを(すなわち、ヌル値)。
私はさらに明確にするSQLのフィドルをした:http://sqlfiddle.com/#!9/42abe7/6
私は何を見ていないのですか?
--edit: -
ラーフルの答えの助けを借りて、私はそれを考え出した:
SELECT d.DID, Nominal, r.`Result`, r.`PRID`
FROM `Dimensions` d
JOIN `Products` x ON d.`PID` = x.`PID`
LEFT JOIN `DimensionResults` r ON d.`DID` = r.`DID`
AND r.`PRID` = 'PRID17ca-fe04-77ba-6ba8-94416f25197f'
LEFT JOIN `ProductReports` p ON r.`PRID` = p.`PRID` AND x.`PID` = p.`PID`
WHERE d.`PID` = 'PID107ca-fe04-77ba-6ba8-94416f25197f'
は私が探している結果を提供します。私はそれがPIDパラメータを渡すことなくできると思ったが、少なくともこれは機能する。
ありがとうございました!
あなたの予想出力は何ですか? – 1000111
上記の例では、Product1としてProduct1に属するすべてのディメンションがレポート 'PRID17ca ....'に報告されています – Voortman