requete SQL

requete SQL - SQL/NoSQL - Programmation

Marsh Posté le 09-06-2004 à 10:26:24    

Bonjour,
 
voila j'ai deux tables :  
Table 1
-champsA
 
Table2
-champsA
-champsB
-champsC
 
et le champsA de la table 1 contient tous les elements possible, le champsA de la table 2 ne contient qu'une partie des elements possible. Je voudrais une requete pour prendre les champsA qui existent dans la table1 mais pas dans la table 2.
voici ce que j'ai fait mais la requete tourne a linfini :
 
SELECT champsA
FROM Table1,Table2
WHERE Table1.champsA != Table2.champsA
 
merci d'avance pour votre aide  :hello:

Reply

Marsh Posté le 09-06-2004 à 10:26:24   

Reply

Marsh Posté le 09-06-2004 à 10:30:18    

select table1.champsA ;)

Reply

Marsh Posté le 09-06-2004 à 13:21:34    

ca tourne a linfini et puis ca plante pareil :(

Reply

Marsh Posté le 09-06-2004 à 13:50:31    

mySql ?
Oracle ?
 
En Oracle, tu peux l'écrire comme ça :

Code :
  1. SELECT Table1.champsA
  2. FROM Table1,Table2
  3. WHERE Table1.champsA = Table2.champsA (+)
  4. AND Table2.champsA is null;


 
En mySql, même principe, mais ça s'écrit différemment :
 

Code :
  1. SELECT Table1.champsA
  2. FROM Table1
  3. LEFT JOIN Table2 ON Table1.champsA = Table2.champsA
  4. WHERE Table2.champsA is null;


 
(il y a probablement des erreurs de syntaxe, j'ai pas testé :D mais c'est en gros le principe)
 
PS : en Oracle, tu peux aussi utiliser une requête imbriquée avec NOT EXISTS, mais je ne pense pas que ce soit plus performant. Dans tous les cas, il vaut mieux que tu aies un index sur le ChampsA dans les 2 tables.

Reply

Marsh Posté le 09-06-2004 à 14:09:29    

Ca serait pas plus rapide ca (si c Oracle)?
 
SELECT ChampsA
FROM table1
MINUS
SELECT ChampsA
FROM table2;
 
Si les attributs ont le meme type, ca devrait marcher non?

Reply

Marsh Posté le 09-06-2004 à 14:16:29    

ouaip, en Oracle, ça devrait marcher et être plus rapide, quoique ...
 
mais en mySql c'est pas possible directement sous cette forme.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed