Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 28/10/2011, 13h11   #1
Invité régulier
 
Inscription : mars 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 23
Points : 9
Points : 9
Par défaut Recherche un item non traduit en id_langu=x

Bonjour à tous,

là je butte sur une requête à priori simple..

Ma table se présente sous cette forme, avec trois colonnes:

Code :
1
2
3
4
5
CREATE TABLE `pages_contenus_textes` (
  `id_page_contenu` int(11) NOT NULL,
  `id_langue` smallint(6) NOT NULL,
  `texte` text COLLATE utf8_bin NOT NULL
);
J'aimerai récupérer tous les textes non traduits dans une langue donnée.

C'est à dire chercher quel id_page_contenu n'est pas traduit en langue 305 par exemple.

Je peux avoir les entrées:
1,108,"mon texte en français"
1,202,"mi texto en español"
2,108,"deuxième texte FR",
2,202,"segundo texto Es",
2,305,"Mi texto italiano IT,

Comment ressortir l'id_page_contenu=1 seulement?

Ce genre de requête ne fonctionne pas:
Code :
1
2
3
4
5
6
7
8
9
SELECT 
	t.*
FROM `pages_contenus_textes` t  
WHERE id_page_contenu  NOT IN  (	SELECT GROUP_CONCAT(id_page_contenu)
 		FROM `pages_contenus_textes` 
 		WHERE id_langue=305
 	)
GROUP BY id_page_contenu 
ORDER BY  id_page_contenu ASC
Le group_concat retourne une valeur string je suppose et le NOT IN ne le comprend pas comme des entiers séparés par des virgules...

Il doit y avoir une solution plus simple... comment feriez-vous?
Merci d'avance!

Clem
ClemLamb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 15h52   #2
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Salut !

Voici une tentative de solution

Code :
1
2
3
4
5
6
 
SELECT DISTINCT(p1.id_page_contenu) 
FROM pages_contenus_textes p1
LEFT OUTER JOIN (SELECT id_page_contenu FROM pages_contenus_textes WHERE id_langue = 305) p2
ON p1.id_page_contenu = p2.id_page_contenu
WHERE p2.id_page_contenu IS NULL
Cela devrait fonctionner. Si y'a un truc que tu piges pas pose les questions

Cela dit, je ne suis pas certain que cela soit la meilleure solution !
Si un cador SQL passe dans le coin, il sera le bienvenue

Ps : la guerre des étoiles c'est le mal : http://www.expreg.com/fred_article.p...re_des_etoiles
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/10/2011, 16h21   #3
Invité régulier
 
Inscription : mars 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 23
Points : 9
Points : 9
Excellent! La réflexion est pas évidente...

Pour la guerre des étoiles.. c'était simplifié pour l'exemple
Merci pour ton aide!
ClemLamb 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 09h10.


 
 
 
 
Partenaires

Hébergement Web