Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1887 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  petite aide SQL requete imbriqué

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

petite aide SQL requete imbriqué

n°912911
veryfree
Posté le 02-12-2004 à 14:42:41  profilanswer
 

hello,
je vais essayé d'etre clair:
 
 
je voudrait faire une requete imbriqué avec mysql, une fusion entre ces deux la:
 
select id from table;
 
select * from table2 where id=[resultat de la premiere]  
 
le resultat est donc une liste d'ID
 
 
Je pense que c'est assez clair.
 
Merci pour votre aide :)

mood
Publicité
Posté le 02-12-2004 à 14:42:41  profilanswer
 

n°912923
veryfree
Posté le 02-12-2004 à 14:51:53  profilanswer
 

j'ai essayé  
select * from table2 where id IN ( select id from table )
 
il me met une erreur, que je peux pas vraiment recopier car mes tables sont bien plus complexe.
mais ca viens peut etre de la version de mysql ?
les requetes imbriqués c'est surpporté?

n°912927
simogeo
j'ai jamais tué de chats, ...
Posté le 02-12-2004 à 14:56:05  profilanswer
 

veryfree a écrit :

j'ai essayé  
les requetes imbriqués c'est surpporté?


 
pour versions >= 4.1 seulement


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°912931
skeye
Posté le 02-12-2004 à 14:59:33  profilanswer
 

Sur mysql.com ils y a quelquepart un exemple pour obtenir le bon résultat via des jointures avec les versions antérieures...


---------------
Can't buy what I want because it's free -
n°912933
veryfree
Posté le 02-12-2004 à 15:02:08  profilanswer
 

simogeo a écrit :

pour versions >= 4.1 seulement


 
j'ai ca dans mon phpinfo:
 
Client API version  3.23.56
 
 
bon et bien, je fait comment maintenant  [:petrus75]

n°912935
veryfree
Posté le 02-12-2004 à 15:03:57  profilanswer
 

skeye a écrit :

Sur mysql.com ils y a quelquepart un exemple pour obtenir le bon résultat via des jointures avec les versions antérieures...


 
ok,jvai voir ca :jap:

n°912936
skeye
Posté le 02-12-2004 à 15:04:53  profilanswer
 

veryfree a écrit :

j'ai ca dans mon phpinfo:
 
Client API version  3.23.56
 
 
bon et bien, je fait comment maintenant  [:petrus75]


http://dev.mysql.com/doc/mysql/fr/ [...] eries.html


---------------
Can't buy what I want because it's free -
n°912960
veryfree
Posté le 02-12-2004 à 15:36:41  profilanswer
 

j'ai presque fini, merci a vous.
 
 
une derniere chose donc:
 
SELECT DISTINCT (`idm` ),email, prenom, pass FROM membres p, `lots` l WHERE l.`date` > '2004-11-01' AND l.idm = p.id AND l.valide = '1'
 
cette requete marche mais pour une raison un peu compliqué, il faut que le premier champs soit l'email mais:
 
SELECT email, prenom, pass,DISTINCT (`idm` )
 
 
ca passe pas.
y a moyen de bricolé ca :D ?

n°912963
skeye
Posté le 02-12-2004 à 15:37:54  profilanswer
 

...euh le distinct est pas forcément juste derrière le select? :??:


---------------
Can't buy what I want because it's free -
n°912967
veryfree
Posté le 02-12-2004 à 15:41:32  profilanswer
 

NP : Led Zeppelin - [Remasters (Disc 2) #9] - Achilles Last Stand
 
[:huit]
 
apparemment oui, on peux pas le mettre ailleurs :/

mood
Publicité
Posté le 02-12-2004 à 15:41:32  profilanswer
 

n°912968
skeye
Posté le 02-12-2004 à 15:42:23  profilanswer
 

veryfree a écrit :

NP : Led Zeppelin - [Remasters (Disc 2) #9] - Achilles Last Stand
 
[:huit]
 
apparemment oui, on peux pas le mettre ailleurs :/


...bah alors pourquoi tu le mets après?[:urd]


---------------
Can't buy what I want because it's free -
n°912973
veryfree
Posté le 02-12-2004 à 15:44:00  profilanswer
 

parce que l'ordre d'apparition de mes champs est tres important :(
 
il peut etre seulement en 4 em position

n°912975
skeye
Posté le 02-12-2004 à 15:46:46  profilanswer
 

Je veux pas dire de conneries, mais en le mettant au début ton distinct indique qu'un ensemble(email, prenom, pass,`idm`) donné n'apparait qu'une fois...
Distinct sur un seul champ n'a pas de sens, sinon il se passe quoi si tu as 2 lignes avec la même valeur pour ce champ mais des valeurs différentes ailleurs?


---------------
Can't buy what I want because it's free -
n°912976
veryfree
Posté le 02-12-2004 à 15:47:06  profilanswer
 

c'est bon j'ai reussi [:volta]
 
group by a la fin a la place du distinct et ca rullez :jap:

n°912977
veryfree
Posté le 02-12-2004 à 15:47:30  profilanswer
 

skeye a écrit :

Je veux pas dire de conneries, mais en le mettant au début ton distinct indique qu'un ensemble(email, prenom, pass,`idm`) donné n'apparait qu'une fois...
Distinct sur un seul champ n'a pas de sens, sinon il se passe quoi si tu as 2 lignes avec la même valeur pour ce champ mais des valeurs différentes ailleurs?


 
ce serait vrai s'il n y avait pas de jointure ;)
 
 
edit:  
idm =>"lots"
email, prenom, pass =>"membres"
 


Message édité par veryfree le 02-12-2004 à 15:48:46
n°912982
skeye
Posté le 02-12-2004 à 15:51:38  profilanswer
 

Euh...
Je vois tjrs pas ce que ça voudrait dire : une jointure ne représente au final qu'une nouvelle table, pas réellement stockée sous cette forme...non? [:urd]
Enfin bref, l'essentiel c'est que tu aies ton résultat... ;)


---------------
Can't buy what I want because it's free -
n°912997
veryfree
Posté le 02-12-2004 à 16:04:41  profilanswer
 

je suis pas spé mais je dirait que le distinct entre en action avant la formation de cette table fusionné.
 
[:ohello]

n°913001
gizmo
Posté le 02-12-2004 à 16:09:42  profilanswer
 

skeye a écrit :

Je veux pas dire de conneries, mais en le mettant au début ton distinct indique qu'un ensemble(email, prenom, pass,`idm`) donné n'apparait qu'une fois...
Distinct sur un seul champ n'a pas de sens, sinon il se passe quoi si tu as 2 lignes avec la même valeur pour ce champ mais des valeurs différentes ailleurs?


Vu que distinct ne fait pas partie de la norme SQL, c'est à chacun de voir comment il est implémenté. Dans PgSQL, si tu mes un DISTINCT ON (...), cela ne s'applique qu'au sous-set et celui-ci n'est par retourné dans les valeurs, tandis qu'un DISTINCT simple s'applique sur l'ensemble du tuple. Dans MySQL, le fonctionnement est assez similaire si mes souvenirs sont bons.

n°913011
skeye
Posté le 02-12-2004 à 16:20:11  profilanswer
 

:jap:
J'aurai appris des choses... ;)


---------------
Can't buy what I want because it's free -
n°913861
Arjuna
Aircraft Ident.: F-MBSD
Posté le 03-12-2004 à 14:26:38  profilanswer
 

J'arrive un peu après la tempête mais bon...
 
Pour info, t'as absolument pas besoin de faire une sous-requête, ni d'utiliser des bidouilles pour en émuler une avec une jointure droite :heink:
 
T'as une table 1 avec des ID.
 
Et du veux les lignes de table 2 dont l'ID correspond aux ID de table 1 c'est ça ? (c'est du moins l'énnoncé de la question)
 
Alors pourquoi tu fais pas ce qu'on fait dans le cadre d'une bête FK (parceque là, y'a pas à tortiller, c'est une FK de type (0,1) que tu as) : une pauvre bête jointure simple ?
 
select table2.*
from table2, table1
where table2.id = table1.id
 
:heink:
 
En plus, vu le nom "id" de table2, j'en déduis que cette FK qui pointe sur table1 est la PK de table2, donc pas besoin de DISTINCT, puisqu'il est impossible d'avoir des boublons !
 
Y'a des fois, j'vous jure, vous cherchez compliqué pour pas grand chose ;)

n°914022
veryfree
Posté le 03-12-2004 à 15:50:20  profilanswer
 

Arjuna a écrit :

J'arrive un peu après la tempête mais bon...
 
Pour info, t'as absolument pas besoin de faire une sous-requête, ni d'utiliser des bidouilles pour en émuler une avec une jointure droite :heink:
 
T'as une table 1 avec des ID.
 
Et du veux les lignes de table 2 dont l'ID correspond aux ID de table 1 c'est ça ? (c'est du moins l'énnoncé de la question)
 
Alors pourquoi tu fais pas ce qu'on fait dans le cadre d'une bête FK (parceque là, y'a pas à tortiller, c'est une FK de type (0,1) que tu as) : une pauvre bête jointure simple ?
 
select table2.*
from table2, table1
where table2.id = table1.id


 
c'est ce que j'ai fait pendant la tempete hein :D
 
 

Citation :


En plus, vu le nom "id" de table2, j'en déduis que cette FK qui pointe sur table1 est la PK de table2, donc pas besoin de DISTINCT, puisqu'il est impossible d'avoir des boublons !
 
Y'a des fois, j'vous jure, vous cherchez compliqué pour pas grand chose ;)


 
non la c'est bon, la 2 em n'est pas une PK :o
 
le distinct est indispensable
 

n°914067
Arjuna
Aircraft Ident.: F-MBSD
Posté le 03-12-2004 à 16:17:25  profilanswer
 

A ok :)
 
J'avoue que j'ai lu en vitesse le début, et plus ça partait dans tous les sens avec des "faut émuler une sous-requête avec mysql" et plus j'ai pas lu la suite :whistle:


Message édité par Arjuna le 03-12-2004 à 16:17:36
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  petite aide SQL requete imbriqué

 

Sujets relatifs
Aide Labview[Résolu] Exploiter 2 fois un résultat d'une requête
problème de syntaxe avec une requête SQLSVP besoin d'aide: NullPointerException avec mon applet
Pb c++, et sqlAide ezPDF
débutant c++ gtk cherche aide pour petit programmerequete croisée ??
débutant recherche aide pour gtk et c++ 
Plus de sujets relatifs à : petite aide SQL requete imbriqué


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR