2016-07-17 9 views
1

Ich habe 2 Tabellen:links 2 Tische kommen nicht funktioniert

Tabelle 1: 'op_ats'

| ID1 | numero |id_cofre | id_chave | estadoAT 
| 1  | 111 | 1  | 3  | 1 
| 2  | 222 | 3  | 3  | 2 
| 3  | 333 | 1  | 4  | 2 
| 4  | 444 | 1  | 2  | 3 

table_2: 'op_ats_cofres_chaves'

| ID2 | num_chave | 
| 1 | A  | 
| 2 | B  | 
| 3 | C  | 
| 4 | D  | 
| 5 | E  | 

ich diese SQL haben :

SELECT chaves.*, ats.numero numAT, ats.estadoAT 
FROM op_ats_cofres_chaves chaves 
LEFT JOIN op_ats ats ON ats.id_chave_cofre = chaves.id AND ats.id_cofre = 1 

Damit ich folgendes Ergebnis:

| ID2 | num_chave | numAT | estadoAT | 
| 1 | A  | 444 | 3  | 
| 2 | B  | NULL | NULL | 
| 3 | C  | 111 | 1  | 
| 4 | D  | 333 | 2  | 
| 5 | E  | NULL | NULL | 

Das Problem ist jetzt, dass ich die Zeilen gefiltert werden soll, die in Tabelle 1 sind aber nur, dass die Spalte ‚estadoAT‘ mit den Werten 1 und 2. Ich habe‘ habe versucht, die Linie

WHERE op_ats.estadoAT = 1 OR op_ats.estadoAT = 2 

Aber das macht das folgende Ergebnis hinzuzufügen:

| ID2 | num_chave | numAT | estadoAT | 
| 1 | A  | 444 | 3  | 
| 3 | C  | 111 | 1  | 
| 4 | D  | 333 | 2  | 

wieder aufnehmen ... Meine Absicht ist, ALLE Zeilen in der Tabelle2 zu erhalten und die Tabelle1-Zeilen mit dem 'id_cofre = 1' und '(estadoAT = 1 ODER estadoAT = 2)' zu verbinden. Jede Hilfe wird geschätzt.

Antwort

1

Sie müssen Bedingung in JOIN-Klausel anstelle von WHERE verschieben.

SELECT chaves.*, ats.numero numAT, ats.estadoAT 
FROM op_ats_cofres_chaves chaves 
LEFT JOIN op_ats ats ON ats.id_chave_cofre = chaves.id AND ats.id_cofre = 1 
AND op_ats.estadoAT = 1 OR op_ats.estadoAT = 2; 
+0

Das hat funktioniert. Vielen Dank Yariash. –

Verwandte Themen