Joindre 4 tables

Joindre 4 tables - PHP - Programmation

Marsh Posté le 14-03-2011 à 22:48:01    

Bonjour j'ai 4 tables qui comporte les mêmes champs avec une clés primaire sur le ID.
 
j'essaye avec ma requête de joindres ces quatres tables mais sans succès.
 
j'ai aussi essayé avec UNION, j'ai séparés les pays par table car je dois insérer dans ces tables chaque ville de tous les pays du monde
avec plusieures informations. afin de ne pas avoir des problèmes de lenteur et de tous faire sur une table j'en ai fait en réalité 250.
 
 
 

Code :
  1. Select
  2.     *
  3. From
  4. ((AfriqueduSud AfriqueduSud RIGHT OUTER JOIN Afghanistan Afghanistan ON (AfriqueduSud.city = Afghanistan.city)) RIGHT OUTER JOIN france france ON (AfriqueduSud.city = france.city)) RIGHT OUTER JOIN emiratsarabesunis emiratsarabesunis ON (AfriqueduSud.city = emiratsarabesunis.city)

Reply

Marsh Posté le 14-03-2011 à 22:48:01   

Reply

Marsh Posté le 15-03-2011 à 01:57:30    

Tu peux inserer toutes les villes dans la meme table, ca ira tres bien.
 
Ensuite ca ne sert a rien de renommer une table avec le meme nom.  
 
Et pour finir, a mon avis les conditions du genre Afriquedusud.city = Afghanistan.city seront toujours fausses.

Reply

Marsh Posté le 15-03-2011 à 09:46:51    

Si les tables ont les mêmes champs, alors t'as besoin d'une seule table.
 
Ton schéma de base de données est (probablement) mal conçu, même si tu résous ton problème actuel, tu pars sur de mauvaises bases.

Reply

Marsh Posté le 15-03-2011 à 10:00:32    

Merci pou vos réponses, je veux bien faire une seul table seulement je me suis dis que 250 pays + toutes ces villes avec environ 10 champs, la base va être énorme j'ai bien peur que ma requête va être très longue à afficher.
 
voici ma requêtes:
 
SELECT id,titre_francais,titre_espagnol,titre_allemand,titre_englais FROM `france` WHERE city LIKE 'paris'";
 
pensez vous qu' une table c'est bien ou alors je peux en faire 8 par région? (asie,europe,Etc..)
 
 
 
 

PunkRod a écrit :

Si les tables ont les mêmes champs, alors t'as besoin d'une seule table.
 
Ton schéma de base de données est (probablement) mal conçu, même si tu résous ton problème actuel, tu pars sur de mauvaises bases.


Message édité par spoque le 15-03-2011 à 10:03:16
Reply

Marsh Posté le 15-03-2011 à 10:07:48    

Ben le boulot d'une base de données c'est de faire ce genre de choses.
C'est pas "250 pays" qui vont mettre à genou le système.  
Tu as les index pour optimiser les performances.
 
Si tu es sceptique, regarde ce forum : y a des millions de message dans des dizaines de catégories différentes, et ça marche bien. Et c'est du mysql derrière :o
 

Reply

Marsh Posté le 15-03-2011 à 10:29:31    

Une table MyIsam (Mysql), de mémoire, peut accueillir jusqu'à 50 millions d'enregistrements. Donc pas de pb.
 
Perso, j'ai actuellement une base dont plusieurs tables font chacune plus de 10 millions d'enregistrements et ça va très vite de rechercher des infos dedans (< 2-3s)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-03-2011 à 10:48:14    

Merci beaucoup pour vos réponses je vais faire qu'une seul table bien indexé.
 
Cédric
 
 

rufo a écrit :

Une table MyIsam (Mysql), de mémoire, peut accueillir jusqu'à 50 millions d'enregistrements. Donc pas de pb.
 
Perso, j'ai actuellement une base dont plusieurs tables font chacune plus de 10 millions d'enregistrements et ça va très vite de rechercher des infos dedans (< 2-3s)


Reply

Marsh Posté le 16-03-2011 à 14:13:29    

Hésite pas à faire une table pour les pays et une autre pour les villes, on sait jamais, ça pourrait servir.[:doc petrus]

 

[edit]

 

...et j'ai des tables de plus de 10 millions de lignes sans gros problèmes de perfs.[:doc petrus]


Message édité par skeye le 16-03-2011 à 14:15:33

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

Sujets relatifs:

Leave a Replay

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