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

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

.
Je vais créer une table spécial mots clefs, comme ça plus de souci
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

Posté : 02 avr. 2005, 20:22
par flitox
mais laisse tomber. En fait je me suis compliqué la vie

On avait pas remarqué

Posté : 03 avr. 2005, 02:59
par david96
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