2010-08-02 4 views
1

J'ai deux tables MySQL avec une structure similaire. à savoirPuis-je faire cela avec MySQL ou dois-je impliquer PHP?

Table_A - Col1, Col2, Col3, Col4, Col5 

Table_B - Col1, Col2, Col3 

J'ai besoin d'exécuter une requête qui dit quelque chose comme:

SELECT * FROM Table_A WHERE (Table_A.Col1 DOES NOT EXISTS in Table_B.Col3 AND Table_B.Col2 = 'A') AND Table_A.Col5 = 2 etc... 

Donc, fondamentalement, je dois sélectionner tout de A qui ne sont pas en B où B a des conditions supplémentaires.

Espérons que l'exemple suivant aidera:

lignes exemple TABLE_A

1, 5, 'Orange', 'Elephant', 1 
2, 3, 'Red', 'Horse', 2 
3, 4, 'Blue', 'Rhino', 2 
4, 4, 'Pink', 'Cat', 2 
5, 2, 'Purple', 'Dog', 2 

rangées exemple Table_B

1, 'A', 3 
2, 'A', 2 
3, 'B', 2 
4, 'C', 3 

Les données renvoyées j'ai besoin est - je l'interrogation pour toutes les lignes de Table_A que (ne sont pas dans Table_B ET Table_B.Col2 = 'A') ET Table_A.col5 = 2

4, 4, 'Pink', 'Cat', 2 
5, 2, 'Purple', 'Dog', 2 

Des idées? Merci!

+0

Une 'jointure gauche' devrait faire le travail. – jantimon

Répondre

0
SELECT A.* FROM table_A AS A 
LEFT JOIN Table_B AS B ON A.Col1 = B.Col3 
WHERE B.Col3 IS NULL AND B.Col2 = 'A' AND ...