Page 1 sur 2

Commande SELECT pour plusieurs tables

Posté : 02 avr. 2005, 10:48
par david96
J'ai créée plusieurs tables (13). Je n'ai pas eu de mal à faire les jointures, par contre j'ai un petit problème avec la commande SELECT effectivement :
<?php

$_POST["clef"]="exemple";


$requete="[b]SELECT [/b]table1_nom, table2_nom, table3_nom

[b]FROM [/b]table1, table2, table3

[b]WHERE [/b]

table1_nom [b]LIKE [/b]('$_POST[clef]')
[b]AND [/b]table2_nom [b]LIKE [/b]('$_POST[clef]')
[b]AND [/b]table3_nom [b]LIKE [/b]('$_POST[clef]')";

?>
Voilà donc le problème et qu'apparement la variable $_POST["clef"] ne peut être attribuée qu'à une table.
Comment faire en sorte qu'elle soit active pour toutes les tables ?

Posté : 02 avr. 2005, 11:31
par flitox
En fait je ne suis pas sûr de ma réponse mais quand tu fais appel à plusieurs tables il faut préciser le nom de la table et le nom du champ :

Code : Tout sélectionner

$requete="SELECT table1.table1_nom, table2.table2_nom, table3.table3_nom
En fait je ne suis pas sûr du sens si c'est table.champ ou champ.table

[edit] après vérification c'est table.champ ;)

http://www.nexen.net/docs/mysql/annotee ... n=jointure

Posté : 02 avr. 2005, 12:06
par Cobaye
et faire appel à trois tables sans jointure, je doute fortement que tu optionnes ce que tu veux

Re: Commande SELECT pour plusieurs tables

Posté : 02 avr. 2005, 12:20
par david96
Merci pour vos réponses mais ce n'est pas tout à fait là mon problème.
Je met les jointures (qui marche très bien), que j'avais omis de préciser en début de post.

Ce qui me pose problème c'est la variable $clef que j'ai mis dans un formulaire pour que les internautes recherche dans toute ma base de donnée celon un mot clef donné.
<input type="text" name="clef" />
<?php

$_POST["clef"]="exemple";


$requete="[b]SELECT [/b]table1_nom, table2_nom, table3_nom

[b]FROM [/b]table1, table2, table3

[b]WHERE [/b]
table1_id=blabla1_id
[b]AND [/b]table1_nom [b]LIKE [/b]('$_POST[clef]')

[b]AND [/b]table2_id=blabla2_id
[b]AND [/b]table2_nom [b]LIKE [/b]('$_POST[clef]')

[b]AND [/b]table3_id=blabla3_id
[b]AND [/b]table3_nom [b]LIKE [/b]('$_POST[clef]')";


?>
Merci pour la suite de vos réponses

Posté : 02 avr. 2005, 12:23
par flitox

Code : Tout sélectionner

LIKE $_POST['clef']

Posté : 02 avr. 2005, 16:42
par david96
Merci mais toujours le même blème. :?

On va décortiquer vite fait sans rentrer dans les détails

page1.htm
<form action="page2.php" method="POST" >

<input type="text" name="clef" >

<input type="submit">

</form>


page2.php
$requete="SELECT table1_nom, table2_nom, table3_nom

FROM table1, table2, table3

WHERE

table1_nom = '". $_POST['clef'] ."' ;


ça marche, par contre pour le reste : NON !
Comment procéder ???
j'ai essayer avec OR à la place de AND .
Je ne vous dit pas le BUG :D

Posté : 02 avr. 2005, 18:16
par iclo
tes 3 tables ont la même structure ??

Posté : 02 avr. 2005, 18:27
par david96
C'est à dire. En fait j'ai une table principale "annonce" avec des clefs secondaire pour la relier aux autres qui sont dédiés par exemple pour les departements, les regions, les pays etc...

Posté : 02 avr. 2005, 18:57
par flitox
Je t'ai déjà expliqué que si tu utilises les champs de plusieurs tables, tu dois spécifier la table à laquelle il appartient.

table.champ

Sinon comment veux-tu qu'il sache à qui elle appartient?

Posté : 02 avr. 2005, 19:04
par iclo
ok, mais ces différentes tables ont des structures identiques ?
Si oui, tu as problême, au niveau de la conception même de ta Db...

Posté : 02 avr. 2005, 20:02
par david96
Ouaich, en fait au lieu de me compliquer et en même temps vous prendre la tête :oops: .

Je vais créer une table spécial mots clefs, comme ça plus de souci :D

En tous cas merci à tous pour votre aide et votre patiente.

iclo elles ont toutes en commun une clef secondaire (ID), mais laisse tomber. En fait je me suis compliqué la vie :lol:

Posté : 02 avr. 2005, 20:22
par flitox
mais laisse tomber. En fait je me suis compliqué la vie :lol:
On avait pas remarqué :roll: :wink:

Posté : 03 avr. 2005, 02:59
par david96
:lol:
Et que pensez vous de ma solution (Créer une table dédié aux mots clefs) ?

requête SQL:
CREATE TABLE 'mot_clef'
 (
'mot_clef_id' INT( 8 ) NOT NULL AUTO_INCREMENT ,
'mot_clef_nom' VARCHAR( 40 ) NOT NULL ,
PRIMARY KEY ( 'mot_clef_id' ) ,
UNIQUE ('mot_clef_nom')
);

Posté : 03 avr. 2005, 12:28
par iclo
out dépend du volume de donnée, mais pour un forum phpbb ça devient très vite l'usine à gaz...

Sinon, tu n'as toujours pas répondu à ma question : tes tables ont-elles toutes une structure identique : même liste de champs ??

Posté : 03 avr. 2005, 16:20
par Invité
out dépend du volume de donnée, mais pour un forum phpbb ça devient très vite l'usine à gaz...

Sinon, tu n'as toujours pas répondu à ma question : tes tables ont-elles toutes une structure identique : même liste de champs ??
Elles ont tous en commun le champ ID