[MySQL] et join

et join [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 17-09-2004 à 10:28:50    

Hello,
J'ai un petit problème pour joindre une table (qui se nomme 'cat_name' ) de type :
id - nom  
et une table (qui se nome news mais la cellule qui m'interresse s'apelle 'cat' ) dans laquelle il y a des chiffres séparés par des virgules :
2, 24, 1, 7
Ces chiffres correspondent aux id's de la table "cat_name".
J'ai cherché dans la doc MySQL et sur :google: mais pas moyen de trouver  :sweat:

Reply

Marsh Posté le 17-09-2004 à 10:28:50   

Reply

Marsh Posté le 17-09-2004 à 10:37:29    

Tu veux dire que pour un enregistrement de la table news, le champ cat contient plusieurs valeurs ?


---------------
Mon blog
Reply

Marsh Posté le 17-09-2004 à 10:40:26    

ratibus a écrit :

Tu veux dire que pour un enregistrement de la table news, le champ cat contient plusieurs valeurs ?


on dirait bien...c'est ce que j'appelle une mauvaise modélisation...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 17-09-2004 à 10:43:54    

Voici a quoi ressemble cat_name :

Code :
  1. +----+----------------------------------+
  2. | id | name                             |
  3. +----+----------------------------------+
  4. |  1 | Agriculture                      |
  5. |  2 | Auto-Moto                        |
  6. |  3 | Bâtiment - Construction          |
  7. |  4 | Banques - Assurances             |
  8. |  5 | Chimie                           |
  9. |  6 | Culturel                         |
  10. +----+----------------------------------+


 
Et voici a quoi ressemble la cellule ou se trouvent les valeurs séparées par des virgules :

Code :
  1. +-----------+
  2. | cat       |
  3. +-----------+
  4. | 6,10,7,14 |
  5. | 6,10,7,14 |
  6. +-----------+


les valeurs séparées par des virgules sont en fait les id de la table cat_name tout au-dessus mais je vois pas comment les joindre  [:be_pipo]

Reply

Marsh Posté le 17-09-2004 à 10:48:35    

be_pipo a écrit :


[...]
les valeurs séparées par des virgules sont en fait les id de la table cat_name tout au-dessus mais je vois pas comment les joindre  [:be_pipo]


Pour être logique, tu devrais avoir 3 tables : cat_name, news, et une news_est_dans_cat contenant cat_id et news_id.


Message édité par skeye le 17-09-2004 à 10:48:59

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 17-09-2004 à 10:55:00    

skeye a écrit :

Pour être logique, tu devrais avoir 3 tables : cat_name, news, et une news_est_dans_cat contenant cat_id et news_id.


Ben wi mais la db va être conséquente et les news peuvent se trouver dans beaucoup de catégories. Je trouvais ça con de rajouter une table avec  
id news - id catégorie
1 - 2
1 - 8
1 - 3
1 - 28
1 - 25
Donc j'ai tout rassemblé dans une seule table. Les recherches ne se font de tout façon que sur une seule catégorie a la fois donc c'est assez rapide (j'ai testé avec un million de news).  
La jointure dont je parle ici est uniquement utilisée en moderation donc presque jamais apellée c'est juste pour pouvoir ajouter/enlever des catégories  :)

Reply

Marsh Posté le 17-09-2004 à 10:59:20    

Citation :

Je trouvais ça con de rajouter une table avec  
id news - id catégorie


 
Et pourtant c'est la seule bonne maniere de faire.

Reply

Marsh Posté le 17-09-2004 à 11:00:46    

Sebastien a écrit :

Citation :

Je trouvais ça con de rajouter une table avec  
id news - id catégorie


 
Et pourtant c'est la seule bonne maniere de faire.


:jap:
Aller se faire chier à exploser une chaine à chaque select sur la table, c'est franchement n'importe-quoi... :sweat:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 17-09-2004 à 11:01:41    

Sebastien a écrit :

Citation :

Je trouvais ça con de rajouter une table avec  
id news - id catégorie


 
Et pourtant c'est la seule bonne maniere de faire.


Mairde j'avais fait comme ça au départ en plus :o
On m'aurait menti  :pt1cable:  
Enfin je voyais pas de différence de vitesse en select simple en tout cas  :ouch:

Reply

Marsh Posté le 17-09-2004 à 11:03:48    

Bon bah en même temps le reste est fait normallement et j'ai encore ma première table donc ça va aller vite :)  
mecrhiii tout le monde :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed