Frage

Ich habe Grund Tabellen eins und zwei. Let`s nennen sie tbl1 und tbl2.

tbl1
---------
1 - apple |
2 - orange |
3 - banana |
4 - pineapple

tbl2
---------
1 - table |
2 - chair |
3 - sofa |

Dann gibt TBL3 ist, den Fremdschlüssel hat, dass es in beiden Tabellen verknüpfen oben.

Tabelle 3 Form hat zwei Auswahlfelder: eine, die tbl1 und andere Anfragen, die fragt tbl2. So weit, ist es gut. Ich kombiniere Elemente aus tbl1 und tbl2 in TBL3.

Dann habe ich die folgende Situation: Wenn Benutzer TBL3 erfüllen, mag ich die select2 (Daten von tbl2 entspricht) erneut zu laden, nachdem der Benutzer ein Element aus tbl1 ausgewählt hat. Was für?

Let`s sagen, dass zum ersten Mal erfüllt TBL3 der Benutzer „Apfel“ von tbl1 und „Sofa“ von tbl2 gepflückt hat. Wenn der Benutzer „apple“ ausgewählt, die zweite Dropdownlist neu geladen mit all drei Elementen als Optionen.

Jetzt das zweite Mal, erfüllt der Benutzer eine TBL3 Form, wenn der Benutzer wieder „apple“ wählt, er wird jetzt nur noch zwei Optionen. Apple und Sofa wurden vor gepflückt. Die Optionen sind jetzt nur „Tisch“ und „Stuhl“. Wenn er nimmt „Apfel“ und „table“ jetzt, wird die verbleibende Option für ersten Punkt „apple“ seine „Stuhl“. Und so weiter ...

Ich kann nicht glauben, von einer SQL diese Abfrage auszuführen, die Elemente aus tbl2 packt. Ich muss das ausgewählte Element aus tbl1 verwenden und irgendwie bleiben die übrigen Elemente greifen, jene, die zu einem mach nicht entsprechen. Ist die SQL-Abfrage possibe? Ich glaube ja, aber nicht aus einer Art und Weise denken.

War es hilfreich?

Lösung

Ich vermute, dass table3 Spalten:

Benutzer, Tbl1-ID, TBL2-ID

Ich vermute, dass Sie wollen, für Benutzer X die Werte für tbl2 auf der von tbl1 gemacht selecton basiert, die nicht in der Tabelle 3 sind.

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>)
   )

Andere Tipps

Wenn die Links sind auf einer Basis pro Benutzer:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id

Wenn die Links sind sind Basis pro Benutzer für:

SQL Server:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top