からすべて収集し、私は二つのテーブルがあります。SQLジョイン - RIGHTテーブル
user-data
:
id | userID | keyID | val
1 99 1 1
user-data-keys
id | key
1 is-staff
2 description
3 image
私は、次のSQLを実行したときに、私は希望を取得し出力:
SELECT `key`,`val` FROM `user-data` RIGHT JOIN `user-data-keys` ON `user-data`.`keyID` = `user-data-keys`.`id`;
生成するもの:
key | val
is-staff 1
description NULL
image NULL
これはまさに私が望むものです。しかし、私はSQLにWHERE句を追加する場合:
SELECT `key`,`val` FROM `user-data` RIGHT JOIN `user-data-keys` ON `user-data`.`keyID` = `user-data-keys`.`id` WHERE `userID` = 99;
を、私はそれだけでis-staff
で1行を取得します。私が理解しているのは、userID = 99
の行だけを要求したからです。しかし、私は多くの異なるユーザーの情報を1つのuser-data
テーブルに格納することを計画しており、それぞれのキーにNULL値があるかどうかを知りたいと思っています。だから私はこれをどのように達成できますか?私はそれが私が気付いていないいくつかの種類のファンシーな結合でなければならないことを知っている。 WHERE userID = 99
を使用している場合
key | val
is-staff 1
description NULL
image NULL
:
だから、明確にする:私はこのような出力を必要としています。現在、WHERE
節を使用している間に1行しか取得できません。
を使用すると、[この](HTTPのようなものを探しています....私を修正してください。 com/sql/sql_isnull.as p)?? – SamGhatak
@SamGhatakは、 'user-data'に対応する' userID'行がなくても 'keys'フィールドを表示したいからです。 – Chud37
だから、これらの行を選択した後でも、これらの行がすべて表示されますか? – SamGhatak