Hey Ich habe ein Problem, die richtigen Informationen aus der Datenbank mit den Anfragen bekommen, die ich benutze, ich habe die folgende Datenbank:Wählen Sie Zeilen mit JOIN eine Unterabfrage
Deck
PK - ID - int
Deckname - varchar(255)
Karte
PK - ID - int
PK Cardname - varchar(255)
Cardvalue - int
Amount - int
Nun, wenn ich die folgende Abfrage:
SELECT * FROM Card WHERE ID IN (SELECT ID FROM Card WHERE Cardname = 'pickachu');
Wo die Kartentabelle die folgenden Werte:
1 pickachu 50 1
1 charmender 55 2
2 squirtle 65 2
ich diese Zeilen zurück:
=1 pickachu 50 1
1 charmender 55 2
ID 1, da pickachu ID 1 hat, verwende ich, dass alle Karten zu erhalten, habe ID 1.
Nun möchte ich auch den Decknamen (ID 1 in der Kartentabelle bezieht sich auf die ID 1 im Deck).
lässt So übernehmen wir die folgenden Werte in Deck haben:
1 myFirstDeck
2 mySecondDeck
ich jetzt diese im Gegenzug erhalten möchten:
1 pickachu 50 1 myFirstDeck
1 charmender 55 2 myFirstDeck
ich versucht haben, zu erhalten diese die folgende Abfrage verwenden:
SELECT Card.*, Deck.Deckname FROM Card INNER JOIN Deck ON (Card.ID = Deck.ID) WHERE Card.Cardname = 'pickachu';
Aber das gibt mir nur Pickachu, und nicht Charmender, die ich auch will. Wie kann ich diese Abfrage anpassen, um die gewünschten Ergebnisse zu erhalten?
Nun, Ihre Klausel sagt, dass Sie nur diejenigen wollen, wo Cardname Pikachu ist, so dass Sie natürlich nur diejenigen bekommen. Warum haben beide Tabellen ID-Spalten, die miteinander verknüpft sind? Die ID ist normalerweise eindeutig. Sie sollte beispielsweise deck_id sein, wenn sie mit der Decktabelle verknüpft ist. –