Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 17h54   #1
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
Par défaut Jointure de plusieurs select disctincts

Bonsoir,

J'aimerais savoir si il est posible de récupérer plusieurs informations d'une seule requête dans le cas suivant:

J'ai 3 tables:

Fruits.
Légumes.
Voiture.

et un mot clé.

J'aimerais récupérer dans chaque table, les entrées commençant par mon mot clé, avec doctrine, quelque chose de ce genre là:

Code :
1
2
3
4
5
6
7
8
$reponse = Doctrine_Query::CREATE()
			->SELECT('fruits.nom, legumes.titre, voiture.titre')
			 ->FROM('fruits')
			 ->leftjoin('legumes')
			 ->leftjoin('voiture')
			 ->WHERE("fruits.nom LIKE '".$search."%'")
			 ->orWhere("legumes.titre LIKE '".$search."%'")
			 ->orWhere("voiture.titre LIKE '".$search."%'");
Est-ce possible ou faut-il faire 3 requêtes différentes ? Merci.
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 17h57   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 543
Points : 7 543
Cela pourrait se résoudre avec une UNION, mais je ne sais pas si ton... machin sait faire ça.
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 17h58   #3
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 090
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 090
Points : 1 896
Points : 1 896
Bonjour,
Un coup tu parles de Fruits, Légume, Voiture, et ensuite d'album, artiste, oeuvre. Ce n'est pas très clair.

Est-ce que tu peux nous donner la structure de tes tables, ainsi qu'un jeu de test et le résultat attendu ?

Tatayo.
tatayo est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 18h07   #4
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
Oui les tables ont été modifiées désolé...

J'aimerais obtenir par exemple avec le mot clé 'c' obtenir dans mon résultat final:

fruit: citron
legumes: courgette
voiture: corvette

EDIT:

Effectivement UNION semble être la solution, mais syntaxiquement, comment appliquer la condition du mot clé à chaque SELECT ? Quelque chose comme suit ?

Code :
1
2
3
4
5
6
7
8
SELECT legume.nom FROM legume 
WHERE legume.nom LIKE '.$keyword.'%
UNION
SELECT fruit.nom FROM fruit 
WHERE fruit.nom LIKE '.$keyword.'%
UNION
SELECT voiture.titre FROM legume 
WHERE voiture.titre LIKE '.$keyword.'%
Merci !
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 10h44   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 028
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 028
Points : 18 321
Points : 18 321
Envoyer un message via MSN à CinePhil
Presque !
Ne t'embête pas avec la syntaxe à la mord moi le noeud de cette saloperie d'ORM et passe lui une requête en SQL natif ; j'espère qu'il y a une instruction pour qu'il puisse la traiter !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$sql = "
	SELECT legume.nom 
	FROM legume 
	WHERE legume.nom LIKE '".$keyword."%' 
	UNION
	SELECT fruit.nom 
	FROM fruit 
	WHERE fruit.nom LIKE '".$keyword."%' 
	UNION
	SELECT voiture.titre 
	FROM legume 
	WHERE voiture.titre LIKE '".$keyword."%' 
";
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 10h18   #6
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
Exact ! Merci beaucoup pour l'aide.

Bonne journée.
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h28.


 
 
 
 
Partenaires

Hébergement Web