sqlite
2017-11-28 2 views 0 likes 
0

Ich versuche, das Ergebnis der Abfrage einer Tabelle zu verwenden, um dann als meine "Wo" für die Spalte einer zweiten Tabelle. Dies ist, was ich versucht habe:Wählen Sie aus der zweiten Tabelle Spalte basierend auf Ergebnis der Auswahl aus verschiedenen Tabelle

SELECT channel 
FROM shows 
WHERE ID ='36741' 

Dies gibt mir ein Ergebnis von "Discovery". Alle Reihen von "Kanälen" in der Tabelle "Shows" sind Spalten in der Tabelle "cccservices". Ich muss dann folgendes tun:

SELECT service 
FROM cccservices 
WHERE Discovery='x' 

Ich habe versucht, dies:

SELECT service 
FROM cccservices 
WHERE (Select channel from shows where ID='36741')='x' 

aber ich bin sicher, dass ich etwas fehle. Die ID wird mir von einem vom Benutzer übermittelten Formular gegeben, wenn das überhaupt wichtig ist.

Antwort

0

Ich mache immer noch meinen Abschluss und ich habe keine Ahnung vom Kontext dieser Abfrage, aber wenn Sie Ihre Aussagen betrachten, wäre diese Abfrage nicht besser in der Leistung?

SELECT service 
FROM cccservices 
INNER JOIN shows ON (ID = '36741' AND Discovery = 'x' AND ID = Discovery); 

Nach hast du mir gesagt, dass ich ein anderes Mal las ich dafür gehen würde:

SELECT service 
FROM cccservices 
WHERE ((Select channel from shows where ID='36741')='x' AND Discovery ='x'); 

3. Versuchen:

SELECT service 
FROM cccservices 
WHERE ((Select channel from shows where ID='36741') = Discovery 
    AND Discovery LIKE '%x%'); 

4. TRY

SELECT service 
FROM cccservices 
INNER JOIN cccservices ON ((SELECT channel FROM shows INNER JOIN shows ON (ID='36741')) LIKE '%x%'); 

Dies gibt Ihnen die Spalte zurück und dann wa es soll x enthalten. Ich denke du verpasst hier nichts ... Und deine Frage war sehr ähnlich!

5. Versuchen:

SELECT cccs1.service 
FROM cccservices cccs1 
INNER JOIN cccservices cccs2 ON ((SELECT s1.channel FROM shows s1 INNER JOIN 
shows s2 ON (ID='36741')) LIKE '%x%'); 
+0

Ich weiß nicht, „Discovery“ bis ich allerdings die erste Abfrage ausführen. Der einzige bekannte Wert vor Abfragen ist die ID –

+0

Als würde ich dafür gehen: SELECT-Dienst FROM cccservices WHERE ((Kanal aus Shows wo ID = '36741' auswählen) = 'x' UND Discovery = 'x'); Sie haben nicht gesagt, dass 'x' von Discovery kam – Jo4nP4l4u

+0

Ich muss den Namen jeder Zeile wissen, die ein 'x' enthält aus der Spalte in der Tabelle "cccservices", die ich als Ergebnis der ersten finde Abfrage. Also das erste selektiere Ergebnisse "discovery", dann muss ich alle Zeilen in der "cccservices" Tabelle kennen, die ein "x" unter der "discovery" Spalte haben. Macht das mehr Sinn? –

Verwandte Themen