2016-04-19 16 views
0
SELECT 
    tableA.col1, 
    tableA.col2, 
    LEFT(tableB.col3, 4) as person 

FROM tableA 

LEFT JOIN tableB ON 

    tableB.col1 = tableA.col1 AND 
    tableB.col2 = tableA.col2 

WHERE tableA.col3 = '000000' 

AND tableA.col4 <> '' 

AND person = 'Zeus' 

ORDER BY tableA.col1, tableA.col4 ASC; 

--- 

col1   col4  person 
001   abc   Zeus 
002   abc   Zeus 
003   xyz   Zeus 
004   xyz   Zeus 

+Benötigen Sie Hilfe bei Kombination SQL-Abfragen

SELECT 
    tableC.col1, 
    SUM(tableC.col2) as cost 

FROM tableC 

WHERE tableC.col3 = 'L' 

GROUP BY tableC.col1, tableC.col3; 

--- 

col1   cost 
001   23462 
002   25215 
003   92381 
004   29171 

=

col1   col4   person   cost 
001   abc   Zeus   23462 
002   abc   Zeus   25215 
003   xyz   Zeus   92381 
004   xyz   Zeus   29171 

Wie mache ich das? Ich habe versucht, die zweite Abfrage als eine geschachtelte Auswahl in der obersten, aber ich konnte es nicht zum Laufen bringen. Beide Ergebnissätze haben die gleichen col1 Werte, die eindeutig sind, also denke ich, dass sie dazu gehören müssen? Und schließlich ist die person wo die Abfrage jedes Mal anders, wenn ich es ausführen werde.

Antwort

1

Sie mit einem Innen versuchen können auf col1 beitreten

SELECT tableA.col1, tableA.col2, LEFT(tableB.col3, 4) as person, tableC.col1, SUM(tableC.col2) as cost 
FROM tableA 
LEFT JOIN tableB ON (tableB.col1 = tableA.col1 AND tableB.col2 = tableA.col2) 
INNER JOIN tableC ON (tableA.col1 = tableC.col1) 
WHERE tableA.col3 = '000000' 
AND tableA.col4 <> '' 
AND person = 'Zeus' 
GROUP BY tableA.col4, person, tableC.col1, tableC.col3; 
ORDER BY tableA.col1, tableA.col4 ASC; 
+0

Danke, funktioniert perfekt. – Slime

1

Wenn Sie nicht möchten, dass Ihre Anfragen combin Sie Alias ​​für Ihre Anfragen wie diese Abfrage

select * from example ... as table1; 

und Sie haben Ihre Auswahl einstellen Ergebnis ist in der Tabelle 1, so können Sie Alias ​​für Ihre anderen ausgewählten in Frage

SELECT 
    tableC.col1, 
    SUM(tableC.col2) as cost 

FROM tableC 

WHERE tableC.col3 = 'L' 

GROUP BY tableC.col1, tableC.col3 as table2 

jetzt setzen Sie können u se beitreten oder andere Befehle für Tabelle1 und Tabelle in Ihrer Frage

join can give you preffered result. 
SELECT 
    table1.*, 
    table2.* 
FROM table1 
JOIN table2 ON 
    table1.col1 = table2.col1 
ORDER BY table1.col1 
+0

Ich wusste nie, dass Sie einen Alias ​​für eine Abfrage festlegen können! Das wird in naher Zukunft sehr hilfreich sein. Vielen Dank. – Slime

Verwandte Themen