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 !