Qui sera capable de résoudre ma requête ? :) - SQL/NoSQL - Programmation
Marsh Posté le 08-10-2005 à 18:10:35
Quel SGBD ? Quelle version ?
Sous SQL Server, Oracle, mySql récent, etc. :
Code :
|
Sous mySql plus ancien :
Code :
|
Marsh Posté le 08-10-2005 à 18:12:35
C'est sur Mysql 4, donc ça serait plus :
SELECT abbreviation, nom_complet
FROM categorie c
WHERE EXISTS (SELECT 1 FROM video WHERE categories LIKE '%'+c.abbreviation+'%')
ORDER BY nom_complet;
Marsh Posté le 08-10-2005 à 18:13:48
ou alors :
SELECT DISTINCT abbreviation, nom_complet
FROM categorie c
LEFT JOIN video v ON v.categories LIKE '%'.abbreviation.'%'
WHERE v.categories IS NULL
ORDER BY nom_complet;
??
Marsh Posté le 10-10-2005 à 17:22:00
Euh... Y'as pas une couille dans ta modélisation ? Il manque clairement une table de correspondance entre tes deux tables.
Il ne faut JAMAIS utiliser de champs contenant une liste.
Fait donc :
TABLE1
id
nom
TABLE2
cat_id
nom
TABLE3
id_table1
cat_id
Et ça contient :
TABLE1 :
1 VIDEO1
2 JEUX3
3 VIDEO4
TABLE2 :
1 jeux
2 video
3 telechargement
4 news
TABLE3 :
1 1
1 2
1 3
2 1
2 3
3 2
3 3
Ainsi, tu fais la bête requête :
Code :
|
(et tu te passes de TABLE1 dans ta requête, car on a suffisamment d'infos dans TABLE3)
Marsh Posté le 08-10-2005 à 16:32:05
J'ai 2 tables sur mysql :
- table1 avec différents champs dont 'categories' dont la valeur peut par exemple être "jeux, video, telechargement, news"
- table2 qui contient la liste des categories, à savoir "jeux", "video", "telechargement", "news".
Je voudrais faire un menu tout en haut d'une page avec la liste des catégories. Le problème c'est que toutes les catégories n'ont pas forcement un enregistrement associé.
Exemple concret : dans la table1, j'ai :
- "VIDEO1" > "jeux, telechargement, video"
- "JEUX3" > "jeux, telechargement"
- "VIDEO4" > "telechargement, video"
Je voudrais donc qu'en haut de ma page, il y ait un menu avec "Jeux", "Telechargement", "Video".. mais pas "news" puisqu'aucun enregistrement n'est associé..
Problème : Comment construire ma reqûete SQL qui va construire le menu ?? J'ai pensé à une requête imbriqué du style :
Mais ça ne marche pas... Merci pour votre aide !