Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
15 Décembre 2017, 22:42:41


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: Selectionner plusieurs table dans une base de donnée ?  (Lu 2957 fois)
0 Membres et 1 Invité sur ce fil de discussion.
nitro007
Invité
« le: 26 Septembre 2008, 00:20:04 »

Bonjour, j'ai créé un script de recherche et je veux un petit coup de main.
Je fait comment une recherche sur plusieurs tables dans une base de donnée ?
Voici le select pour une table:
Code:
$query = mysql_query("SELECT * FROM table1 WHERE titre LIKE '%$requete%' ORDER BY id DESC") or die (mysql_error());

Merci de m'aider
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« le: 26 Septembre 2008, 00:20:04 »

 Journalisée
Arkhena
Bavard
***
Hors ligne Hors ligne

Messages: 232



Voir le profil
« Répondre #1 le: 26 Septembre 2008, 09:31:21 »

Bonjour,

Il faut faire une jointure sur les tables sinon, ça va te sortir un produit cartésien et tu auras beaucoup trop de résultats...

En clair, imaginons une table véhicule avec un id_vehicule unique et un id_couleur. Imaginons une autre table couleur qui comporte un id_couleur et un label_couleur.

Pour sélectionner tous les véhicules rouges, il faudra faire :

Citation
SELECT * FROM vehicule, couleur WHERE vehicule.id_couleur = couleur.id_couleur AND couleur.label_couelur = 'rouge'

Ensuite, pour bien comprendre les tenants et aboutissants de la création de base, du requêtage avancé etc, il faudra se pencher plus en avant sur le SQL.

Cordialement,

Arkhena
Journalisée
nitro007
Invité
« Répondre #2 le: 26 Septembre 2008, 13:05:42 »

merci, tu est gentille  Clin d'oeil
je test ca !
Journalisée
nitro007
Invité
« Répondre #3 le: 26 Septembre 2008, 13:17:15 »

Avant:
Code:
$query = mysql_query("SELECT * FROM articles_perso WHERE titre LIKE '%$requete%' ORDER BY id DESC") or die (mysql_error());

Après :

Code:
$query = mysql_query("SELECT * FROM articles_perso, articles_filmetjeuxvideo WHERE titre= titre.id  LIKE '%$requete%' ORDER BY id DESC") or die (mysql_error());

Ca ne mache pas  Triste
Journalisée
chrmag
Bavard
***
Hors ligne Hors ligne

Messages: 131


Voir le profil WWW
« Répondre #4 le: 26 Septembre 2008, 14:50:28 »

Dans ton WHERE il faudrait uiliser quelque chose du type: {table1}.{col1} = {table2}.{col2} (sachant que col1 se trouve dans table1 et col2 se trouve dans table2; par ailleurs table1 et table2 sont references dans le FROM)
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« Répondre #4 le: 26 Septembre 2008, 14:50:28 »

 Journalisée
K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #5 le: 26 Septembre 2008, 15:43:05 »

Il faudra bien comprendre les jointures avant de les utiliser Clin d'oeil
Sinon si ça marche pas il faut donner l'erreur SQL ...
Journalisée

Le support ne se fait pas par MP, merci de le respecter !
nitro007
Invité
« Répondre #6 le: 26 Septembre 2008, 22:21:11 »

Je sais mais dans mon cas c'est pas du facile !
Que devrai-je faire ?
Journalisée
chrmag
Bavard
***
Hors ligne Hors ligne

Messages: 131


Voir le profil WWW
« Répondre #7 le: 26 Septembre 2008, 23:34:11 »

Si j'ai bien compris: tu as 2 tables (articles_perso et articles_filmetjeuxvideo) qui ont les memes colonnes et tu veux avoir les donnees d'un a la suite de l'autre?
Journalisée
nitro007
Invité
« Répondre #8 le: 26 Septembre 2008, 23:36:57 »

Bon dans mon formulaire de recherche http://nitro007.webou.net, je veux pouvoir rechercher des titres (d'articles) dans mes tables  articles_perso, articles_filmetjeuxvideo, articles_design et verra par la suite...
Donc je cherche dans plusieurs tables, comment faire une jointure dans mon cas ?
Journalisée
Arkhena
Bavard
***
Hors ligne Hors ligne

Messages: 232



Voir le profil
« Répondre #9 le: 27 Septembre 2008, 17:51:15 »

Bon dans mon formulaire de recherche http://nitro007.webou.net, je veux pouvoir rechercher des titres (d'articles) dans mes tables  articles_perso, articles_filmetjeuxvideo, articles_design et verra par la suite...
Donc je cherche dans plusieurs tables, comment faire une jointure dans mon cas ?

OK, donc en fait, tu recherches plutôt ça :

Citation
SELECT titre FROM articles_perso WHERE titre LIKE '%$requete%' ORDER BY id DESC
UNION SELECT titre FROM articles_filmetjeuxvideoWHERE titre LIKE '%$requete%' ORDER BY id DESC
UNION SELECT titre FROM articles_design WHERE titre LIKE '%$requete%' ORDER BY id DESC

Juste une remarque : apparemment, tu as une base de données qui comporte une table articles_perso, une table articles_filmetjeuxvideo et une tables articles_design. Cette base a été mal conçue. En effet, il aurait fallu créer une quatrième table articles qui comporte toutes les caractéristiques communes aux 4 autres... De ce fait, tu n'aurais pas besoin de faire des "UNION" dans ta requete. Il faut savoir que les UNION sont très coûteux en ressources.

Cordialement,

Arkhena
Journalisée
nitro007
Invité
« Répondre #10 le: 27 Septembre 2008, 19:13:36 »

Merci pour ta reponse mais ca marque
Code:
Incorrect usage of UNION and ORDER BY
Mais merci de m'avoir répondu, j'essayerai de régler le problème.

Journalisée
K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #11 le: 27 Septembre 2008, 21:30:02 »

J'approuve ce qu'à dit Arkhena, et j'ajoute que si tes 3 tables ont les mêmes caractéristiques tu n'as besoin en fait que d'une table ...
Journalisée

Le support ne se fait pas par MP, merci de le respecter !
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.022 secondes avec 21 requêtes.