Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 05/04/2011, 06h46   #1
Invité de passage
 
Inscription : mars 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 9
Points : 1
Points : 1
Par défaut [MySQL] Problème requête

Bonjour,

J'ai un problème sur une requête.
Je voudrai retourner la ligne de la langue sélectionner si elle est existe sinon la langue par défaut.

Voici un aperçu des tables qui serves.

Table page_rubrique
id_pages srub
4 0
5 4


Table page_contenue
id_contenue id_page id_lang nom_pages
1 4 1 blabla fr
2 4 2 blabla Corse
3 5 1 coucou FR


Table langs
id name dafalt
1 Fançais 1
2 Corse 0


Voici la requête que j'ai pour le moment mais il me sort pas se que je veut :


Citation:
SELECT *
FROM pages_rubriques AS R
LEFT JOIN pages_contenus AS C ON (R.id_page = C.id_page AND C.id_lang = $id_lang)
LEFT JOIN pages_contenus AS D ON (C.id_page IS NULL AND R.id_page = C.id_page AND D.id_lang = $id_lang_default)


Je souhaiterai qu'il me sorte le contenue dans la langue 1 si il n'y a pas de langue 2 de la table.

Merci
adjaxio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 09h45   #2
Membre régulier
 
Homme
Chef de projet NTIC
Inscription : juin 2007
Messages : 69
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Chef de projet NTIC
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2007
Messages : 69
Points : 70
Points : 70
Salut adjaxio,

Tu peux utiliser la commande CASE WHEN en sql pour tester si une valeur de langue t'as été retournée. En cas de valeur NULL tu renvois ta langue par défaut.
Cobalt59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 16h04   #3
Invité de passage
 
Inscription : mars 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 9
Points : 1
Points : 1
Bonjour,
Merci Cobalt59

Peut tu m'aider un peut car je patauge et j'arrive vraiment pas a trouver la tournure de cette sataner requête ...
Voici se que j'ai fait je vous poste le résultat de la requête aussi :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT *
FROM pages_rubrique AS R
LEFT JOIN pages_contenue AS C ON ( R.id_pages = C.id_page
AND C.id_lang =1  ) ### Langue 1 defaut & Langue 2 autre
LEFT JOIN pages_contenue AS D ON ( C.id_contenue IS NULL
AND R.id_pages = C.id_page
AND D.id_lang =1 )
WHERE (
srub =9
)
AND EXISTS (
 
SELECT *
FROM pages_contenue
WHERE id_contenue = C.id_contenue
)
LIMIT 0 , 30
Ce resultat est pour la langue par defaut :
Code :
1
2
3
id_pages 	srub 	accueil 	lang 	membre 	hors_menu 	ordre 	modules 	action 	hors_tout 	id_contenue 	id_page 	id_lang 	nom_pages 	titre_pages 	nom_rechercher 	contenue 	id_contenue 	id_page 	id_lang 	nom_pages 	titre_pages 	nom_rechercher 	contenue
25 	9 	0 	  	0 	0 	3 	  	  	0 	30 	25 	1 	ryuruuyuytu 	  	ryuruuyuytu 	<p>tyyuu</p> 	NULL 	NULL 	NULL 	NULL 	NULL 	NULL 	NULL
26 	9 	0 	  	0 	0 	4 	  	  	0 	32 	26 	1 	fr 	  	fr 	<p>fdf</p> 	NULL 	NULL 	NULL 	NULL 	NULL 	NULL 	NULL
Celui la pour la langue autre :
Code :
1
2
id_pages 	srub 	accueil 	lang 	membre 	hors_menu 	ordre 	modules 	action 	hors_tout 	id_contenue 	id_page 	id_lang 	nom_pages 	titre_pages 	nom_rechercher 	contenue 	id_contenue 	id_page 	id_lang 	nom_pages 	titre_pages 	nom_rechercher 	contenue
25 	9 	0 	  	0 	0 	3 	  	  	0 	31 	25 	2 	qdsfdf 	  	qdsfdf 	<p>sdfsdfsdfsdf</p> 	NULL 	NULL 	NULL 	NULL 	NULL 	NULL 	NULL
Merci
adjaxio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 17h06   #4
Membre régulier
 
Homme
Chef de projet NTIC
Inscription : juin 2007
Messages : 69
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Chef de projet NTIC
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2007
Messages : 69
Points : 70
Points : 70
Sans vraiment connaître je vais essayer :

Code :
1
2
3
4
5
6
7
8
 
SELECT *,
CASE RqtLang.id_lang WHEN RqtLang.id_lang IS NULL RETURN 
(SELECT id_lang FROM langs l where dafalt='1')
 ELSE RqtLang.id_lang END
FROM pages_rubrique AS R
LEFT JOIN pages_contenue AS C ON ( R.id_pages = C.id_page),
(SELECT * FROM langs l where l.id_lang=c.id_lang) as RqtLang
Après sans pouvoir tester la requête je ne peux pas t'assurer que cela fonctionne parfaitement.
Cobalt59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h24.


 
 
 
 
Partenaires

Hébergement Web