Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1582 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Qui sera capable de résoudre ma requête ? :)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Qui sera capable de résoudre ma requête ? :)

n°1218352
JulienNet
Posté le 08-10-2005 à 16:32:05  profilanswer
 

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 :

Code :
  1. SELECT abbreviation,nom_complet
  2. FROM categorie
  3. WHERE (SELECT count(id) FROM video WHERE categories=abbreviation) <> 0
  4. ORDER BY nom_complet


 
Mais ça ne marche pas... Merci pour votre aide !
 

mood
Publicité
Posté le 08-10-2005 à 16:32:05  profilanswer
 

n°1218398
Beegee
Posté le 08-10-2005 à 18:10:35  profilanswer
 

Quel SGBD ? Quelle version ?
 
Sous SQL Server, Oracle, mySql récent, etc. :
 

Code :
  1. SELECT abbreviation, nom_complet
  2. FROM categorie c
  3. WHERE EXISTS (SELECT 1 FROM video WHERE categories = c.abbreviation)
  4. ORDER BY nom_complet;


 
Sous mySql plus ancien :
 

Code :
  1. SELECT DISTINCT abbreviation, nom_complet
  2. FROM categorie c
  3. LEFT JOIN video v ON v.categories = c.abbreviation
  4. WHERE v.categories IS NULL
  5. ORDER BY nom_complet;

n°1218400
JulienNet
Posté le 08-10-2005 à 18:12:35  profilanswer
 

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;

n°1218403
JulienNet
Posté le 08-10-2005 à 18:13:48  profilanswer
 

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;
 
??

n°1219755
Arjuna
Aircraft Ident.: F-MBSD
Posté le 10-10-2005 à 17:22:00  profilanswer
 

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 :
  1. select distinct table2.nom
  2. from table2, table3
  3. where table2.cat_id = table3.cat_id


 
(et tu te passes de TABLE1 dans ta requête, car on a suffisamment d'infos dans TABLE3)


Message édité par Arjuna le 10-10-2005 à 17:23:26

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Qui sera capable de résoudre ma requête ? :)

 

Sujets relatifs
Migration sous Mysql... résultat de la requete videUne requete galere.
[SQL] Erreur #306 sur Requete comparant 2 mémo ! Help plzRequete qui fonctionne qu'a motie
PHP5 - Récupérer la variable d'une URL pour requête dans un flux XMLExpression reguliere sur une requete Insert
[XSL] requete xpathaide pour une requete, je patauge
requete sql + php[débutant] remplir jtable avec requete
Plus de sujets relatifs à : Qui sera capable de résoudre ma requête ? :)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR