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 18/01/2012, 16h05   #1
Invité régulier
 
Inscription : décembre 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 14
Points : 6
Points : 6
Par défaut Requête (et sous-req.) compliquées

Bonjour,*le titre est pas très parlant, désolé...
J'ai une table CITATION et une table TAG. Chaque citation est complétée par des mots-clés, le tout rangée dans une table CIT_TAG.
J'essaye de fabriquer des paires de mots-clés qui reviendraient fréquemment. Exemple : la citation A est taguée avec 1, 2 et 3 ; la citation B est taguée avec 1,2 et 4. 1 et 2 sont une paire, pas 3 et 4 car ils ne se côtoient dans aucune citation. Je voudrais en plus pouvoir afficher le nombre d'occurences des paires. Et ensuite afficher les citations où apparaissent les paires
Bref, j'ai commencé une 1ère requête :
Code :
1
2
3
4
5
6
7
8
SELECT DISTINCT id_tag
	FROM CIT_TAG
	WHERE id_citation IN (
		SELECT id_citation
		FROM CIT_TAG
		WHERE id_tag = "'.$id_tag.'"
		)
	AND id_tag <> "'.$id_tag.'"'
$id_tag provenant d'un GET.
Ca marche, j'ai bien les paires qui s'affichent.
Mais je cale pour la suite...
- calculer le nb d'occurences des paires (du genre tag1 et tag3 apparaissent X fois) et donc faire DESC sur cette valeur (j'ai essayé avec des COUNT)
- afficher l'id_citation des citations qui auraient les deux mots-clés

Est-ce que vous voyez comment faire ?
artxtra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 16h26   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,

Citation:
- calculer le nb d'occurences des paires (du genre tag1 et tag3 apparaissent X fois) et donc faire DESC sur cette valeur (j'ai essayé avec des COUNT)
- afficher l'id_citation des citations qui auraient les deux mots-clés
En fait ces deux demande sont un peu identique.
Une requête générique pour vous faire avancer

Code :
1
2
3
4
5
6
 
SELECT ma_col
FROM ma_table
WHERE ma_cond IN ('X', 'Y', 'Z')
GROUP BY ma_col
HAVING count(*) > 1
Le having count(*) > 1 permet de vérifier que vous avez au moins 2 conditions sur les 3 qui sont respectées pour l'occurence de ma_col.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 18h54   #3
Invité régulier
 
Inscription : décembre 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 14
Points : 6
Points : 6
J'ai fait
Code :
1
2
3
4
5
SELECT id_citation
FROM CIT_TAG 
WHERE id_tag IN ('.$id_tag1.', '.$id_tag2.') 
GROUP BY id_citation 
HAVING count(*) > 1
et ça marche !
Merci !
En plus, je récupère le nb de lignes avec un mysql_num_rows !
Parfait !

(du coup, je peux essayer non plus avec des paires, mais avec des triplets, etc.)
artxtra 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 06h45.


 
 
 
 
Partenaires

Hébergement Web