質問
基本的なテーブル1と2があります。それらをtbl1およびtbl2と呼びましょう。
tbl1
---------
1 - apple |
2 - orange |
3 - banana |
4 - pineapple
tbl2
---------
1 - table |
2 - chair |
3 - sofa |
次に、上記の両方のテーブルにリンクする外部キーを持つtbl3があります。
表3のフォームには、tbl1を照会するフィールドとtbl2を照会するフィールドの2つの選択フィールドがあります。ここまでは順調ですね。 tbl3でtbl1とtbl2のアイテムを組み合わせます。
次に、次の状況があります。ユーザーがtbl3を満たした場合、ユーザーがtbl1からアイテムを選択した後にselect2(tbl2のデータに対応)をリロードします。何のために?
tbl3を初めて満たすために、ユーザーが「リンゴ」を選んだとしましょう。 tbl1および「ソファ」からtbl2から。ユーザーが「apple」を選択すると、2番目のドロップダウンリストがリロードされ、3つのアイテムすべてがオプションとして表示されます。
今、ユーザーが「アップル」を選択した場合、ユーザーが2回目のtbl3フォームを実行します。繰り返しますが、彼には2つのオプションしかありません。リンゴとソファは以前に選ばれました。現在、オプションは「表」のみです。および「椅子」。彼が「リンゴ」を選んだ場合および「表」さて、最初のアイテム「アップル」の残りのオプションは「椅子」になります。など...
tbl2から要素を取得するこのクエリを実行するSQLは考えられません。 tbl1から選択した要素を使用し、マッハに対応しない残りのアイテムを何らかの方法で取得する必要があります。このSQLクエリは可能ですか?私はそう信じていますが、抜け道を考えることはできません。
解決
table3には列があると推測しています:
ユーザー、Tbl1-ID、Tbl2-ID
ユーザーXには、表3にないtbl1から作成されたselectonに基づくtbl2の値が必要であると推測しています。
SELECT ID, Value
FROM tbl2
WHERE tbl2.ID NOT IN (
SELECT Tbl2-ID
FROM Table3
WHERE (User = <this user>) AND (Tbl1-ID = <selected tbl1 ID>)
)
他のヒント
リンクがユーザーごとにある場合:
SELECT t.id,
t.value
FROM TABLE2 t
JOIN TABLE3 t3 ON t3.id != t.id
リンクが である場合、ユーザーごとに:
SQLサーバー:
SELECT t.id,
t.value
FROM TABLE2 t
JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = @userId
Oracle:
SELECT t.id,
t.value
FROM TABLE2 t
JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = :userId