2016-10-30 26 views
0

Ich versuche, so etwas zu tun:Abfrage in anderer Abfrage

SELECT 
fk_activity_id AS KeyId, 
data, 
created_on, 
(SELECT 
     data 
    FROM 
     activity_queue_data 
    WHERE 
     activity_queue_data.key = 'data' 
      AND activity_queue_data.activity_data_id = KeyId) 
FROM 
    activity_queue_data 
WHERE 
    activity_queue_data.key = 'filename' 
LIMIT 100; 

Das Problem Ich habe eine Tabelle wie folgen aus:

table description

Und die Informationen seine Lagerung wie diese

table content

Dies ist ein Legacy-Code, ich kann diesen Code nicht ändern ...

Aber ich möchte den Inhalt und den Namen für jede Datei in der gleichen Abfrage erhalten ... keine Ahnung ... ???

Antwort

0

Wenn Ihre Frage ist, was Sie beabsichtigen, müssen Sie Tabellen-Aliases und qualifizierte Spaltennamen:

SELECT aqd.fk_activity_id AS KeyId, aqd.data, aqd.created_on, 
     (SELECT aqd2.data 
     FROM activity_queue_data aqd2 
     WHERE aqd2.key = 'data' AND 
       aqd2.activity_data_id = aqd.KeyId -- this might be backwards 
     ) as other_data 
FROM activity_queue_data aqd 
WHERE aqd.key = 'filename' 
LIMIT 100; 

Einige Ratschläge: Verwenden Sie Tabellen-Aliases und qualifizierte Spaltennamen in einer Abfrage, die mehr als eine Tabelle verweist. Auf diese Weise müssen Sie nicht darüber nachdenken, wann Sie das Richtige tun sollten.

+0

Ich habe diese Antwort 'Fehlercode: 1054. Unbekannte Spalte 'aqd.KeyId' in 'where Klausel'' – aasanchez

+1

@aasanchez. . . Das war ein Tippfehler. –

Verwandte Themen