Pobleme Requette SQL

younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012 - 8 janv. 2007 à 12:17
white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010 - 11 janv. 2007 à 17:32
Bonjour,
J'ai un probleme d'affichage des resultats d'uen requette SQL,
Voilà le shema de ma base de données :

table1(id, nom, adresse);
table2(id, c1, c2); c1=nom, c2=adresse.

La table table1 contient 9000 enregistrements (dont 1000 validés et 8000 pas encore).
La table table2 contient les 1000 enregistrements validés;( les enregistrements validés qui existent deja dans la table table1).
Je veux faire une requette pour afficher le contenu des 2 tables sans répétition.

mais avec l'affichage des enregistrements de la table table2 avant la table1.
par exemple :
j ai
table1(1,nom1,adr1)(2,nom2,adr2)(3,nom3,adr3)(4,nom4,adr4)(5,nom5,adr5)
table2(2,nom,adr2)(5,nom5,adr5)

on affichage j'aurai :
(2,nom,adr2)
(5,nom5,adr5)
(1,nom1,adr1)
(3,nom3,adr3)
(4,nom4,adr4)

Merci pour vos aides.

N'importe où. 
mais là où il le faut.

6 réponses

bonbone Messages postés 14 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 21 octobre 2007
8 janv. 2007 à 15:54
bonjour,

moi j'aurais fait ces 2 requêtes mais je suis pas sure que ça marche

select *from table2;


select * from table1 where id not in (select id from table2)
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
8 janv. 2007 à 16:02
Merci pour la réponse.
Malheureusement ça marche pas.
je veux faire une seule requette seulement qui contient tout.
Merci.

N'importe où. 
mais là où il le faut.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
8 janv. 2007 à 23:36
Salut

Une petite tentative de reponse.
select *from table2
UNION
select * from table1 where id not in (select id from table2)

NB les nom de champs doivent correspondre sur loz table resultat

pour cela il faut utilser as pour renommer les colonnes (en sqlserveur) en mysql je ne sais pas.

Ensuite tu peux ajouter unecolonne virtuelle

select *, 'table2' as provenance
from ...
union
select *, 'table1' as provenance

from ...

j'espere avoir trouvé une piste

Voila
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
9 janv. 2007 à 10:07
oui j'ai deja fait cette solution ça marche tres bien merci,
mais le probleme je veux faire le tri par ls resultats de la table table2 et puis afficher les resultats de la table table1 !
Merci pour votre aide.

N'importe où. 
mais là où il le faut.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
9 janv. 2007 à 10:17
on affichage j'aurai :
table2 :
(2,nom,adr2)
(5,nom5,adr5)
table 1 :
(1,nom1,adr1)
(3,nom3,adr3)
(4,nom4,adr4)

N'importe où. 
mais là où il le faut.
0
white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010
11 janv. 2007 à 17:32
Essaie ça, je ne suis pas sure que ça marche...mais on ne sais jamais

select * ,1 as ordre from table2
UNION
select *, 2 as ordre  from table1 where id not in (select id from table2)
ORDER BY ordre

White_Mage();
0
Rejoignez-nous