Requete 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 à 11:50
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 19 janv. 2007 à 12:31
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.

35 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 janv. 2007 à 13:17
Hello,

déjà, pourquoi avoir fait 2 tables, dans ce cas...?

Bref, fais 2 requêtes. Une "normale" sur ta table2
SELECT id, nom, adresse FROM table2

Une moins normale, sur table1
SELECT id, nom, prenom FROM table1
WHERE id NOT IN (SELECT id FROM table2)

par exemple
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 à 13:23
Merci pour l'aide,

je travail sur un site qui est daja fait par une autre Ste, alors je peux pas modificer une base qui contient 100 tables et plus de 20 000 Enregistrements.

Pour mon probleme, je dois forcementfaire une seule requette (coté php)!.

N'importe où. 
mais là où il le faut.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 janv. 2007 à 14:16
Ben

SELECT t1.id, t1.nom, t1.adresse, t2.id, t2.nom, t2.adresse
FROM table 1 t1, table2 t2
WHERE t1.id NOT IN (SELECI id FROM t2)
order by t1.id, t2.id
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 à 15:37
ça donne des resultats terribles !.
exemple :
id    id
1, 7, ----
2, 7, ----
3, 7, ----
4, 7, ----
5, 7, ----
6, 7, ----
8, 7, ----
9, 7, ----
10, 7, ----
11, 7, ----
12, 7

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

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

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 janv. 2007 à 15:40
Salut,

tout dépend des modifications, mais faire un insert ou un update sur 20 000 enregistrements suite à une erreur de conception, j'ai déjà fait....

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
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 à 15:54
N'importe où. 
mais là où il le faut.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 janv. 2007 à 16:07
Non ma requête est foireuse de toute manière.

ceci dit...c'est mal foutu comme système.
Je ne pense pas que tu pourras extraire ça en UNE seule requête.
Sauf à faire un traitement en PHP ensuite, derrière.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
9 janv. 2007 à 09:24
Salut,

SELECT DISTINCT id, nom, adresse FROM (
SELECT id, nom, adresse FROM table2
UNION SELECT id, nom, prenom FROM table1)

un truc comme ça...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
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:29
j'ai fait ça :
select id from table1 where id not in( select id from table2)
UNION ALL
select id from table2
order by id
moi je veux dans order by , afficher les resultats de la table2 et puis les resultats de la table1.
Merci.

Coucou747 : merci, j'ai testé ce que tu m'as donné, mais ça donne des erreurs

N'importe où. 
mais là où il le faut.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 janv. 2007 à 18:01
Salut,

Comme l'a dit Malalam tu ne peux pas faire ça en une seule requête ;)
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
10 janv. 2007 à 10:00
Merci a tous
comme vous avez dit, il falait faire 2 requettes, mais j'avais un seul problème c'est que j'affiche le resultat sur plusieurs pages !.
mais maintenant j'ai pas resolu le probleme grace a vos aides .
Merci

N'importe où. 
mais là où il le faut.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 janv. 2007 à 10:13
Tu peux stocker le résultat en cache dans un fichier et te servir du fichier ensuite pour l'afficher sur les autres pages ;)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
10 janv. 2007 à 12:08
Salut,

on n'a pas ta base pour tester, donc les erreurs, normal, ça en sort, mais tu pourrais au moins nous dire lesquelles....

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
10 janv. 2007 à 12:10
Salut,

antho> tu dois pouvoir le faire en une seule, c'est forcément possible...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
10 janv. 2007 à 13:19
Oui, c'est reglé merci a vos aides,
2 requettes plus un teste à l'affichage des resultats du 2eme requettes,
"on n'affiche le resultat du 2ème requette que si on a plus de resultat du premiere requette".
Merci.

N'importe où. 
mais là où il le faut.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 janv. 2007 à 18:36
Coucou > pourquoi ça serait forcément possible ? au contraire là on a bien vu que en tout cas, on a pas trouvé de solution en une seule requête (ce qui ne veut pas dire que ce n'est pas possible, mais honnêtement, je doute que ça le soit).
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 janv. 2007 à 13:18
Salut,

Lieber Antho, as tu déjà fait un tour dans un livre de MYSQL ? Selon eux, tout est possible, quand tu sais quels sont les contraites, il te restes à demander à mysql de te découper tes lignes.... Le plus compliqué, c'est de séléctionner trop de lignes, ensuite, pour les choisir, ça va tout seul...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 janv. 2007 à 13:24
Tout est possible, à condition de bien structurer ta base de données. On ne peut pas demander à mysqlk de palier aux erreurs de conception. Et là, il y en a une.
Je n'affirme pas que c'est impossible en une seule requête, mais j'émets de sérieux doutes aussi. En tous cas, je n'ai pas trouvé de moyen de le faire.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 janv. 2007 à 19:38
Mouais en même temps, si un manuel te dit qu'avec le super parachute machin tu peux te jeter du haut de la tour effeil et ouvrir le parachute 10 mètres avant le sol, crois-le sur parole si tu veux, mais je ne tenterai pas l'expérience ... XD et comme l'a dit Malalam, quand t'as une mauvaise conception, MySQL ne peut y pallier, dans le cas présent, on ne peut pas le faire en une seule requête ;)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 janv. 2007 à 13:29
Salut,

si on m'envoyait le message d'erreur de ma requette ou bien les insert into qui permettent de créer la base, je veux bien tenter de vous prouver le contraire...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
Rejoignez-nous