Selectionner 3 tables d'une base2données?

Fermé
linda.zazy Messages postés 297 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 2 février 2017 - Modifié par linda.zazy le 27/05/2010 à 00:00
linda.zazy Messages postés 297 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 2 février 2017 - 27 mai 2010 à 12:35
salut j'ai fais un moteur de recherche interne pour mon site web, j'ai trouvé un script qui fonctionne bien mais je veux sélectionner 3tables au lieu d'une seule. j'ai éssayé mais je reçois tjrs un message(erreur de syntax) voila le code:

<?
if(isset($_POST['requete']) && $_POST['requete'] != NULL){
mysql_connect('localhost','root','');
mysql_select_db('parc');
$requete = htmlspecialchars($_POST['requete']);
$query = mysql_query("SELECT * FROM news WHERE nom LIKE '%$requete%' ORDER BY id DESC") or die (mysql_error());..............................................................................
...........................................................


voila je veuw ajouter 2 autres tables faune et flore:
j'ai fait:
SELECT * FROM news,faune,flore WHERE nom LIKE.....

est ce que vous pouvez m'aider?
A voir également:

2 réponses

Salut

Le plus simple pour ton cas semble être une "addition" des résultats dans news avec les résultats dans faune et les résultats dans flore. Mais attention, pour réaliser une telle "addition" les structures des tables (ou tout du moins leurs projections) doivent être identiques

Si c'est le cas, ta requête doit alors être l'union des 3 résultats :
SELECT * FROM news WHERE nom LIKE '%$requete%' ORDER BY id DESC
UNION
SELECT * FROM flore WHERE nom LIKE '%$requete%' ORDER BY id DESC
UNION
SELECT * FROM faune WHERE nom LIKE '%$requete%' ORDER BY id DESC

le seul pb de cette syntaxe est que tu aurais d'abord les résultats de news puis ceux de flore puis ceux de faune.

Si tu veux mélanger tous ces résultats pour ensuite les trier par ID, il faut alors considérer cette union comme base pour une requête de niveau supplémentaire :
SELECT * FROM (
SELECT * FROM news WHERE nom LIKE '%$requete%'
UNION
SELECT * FROM flore WHERE nom LIKE '%$requete%'
UNION
SELECT * FROM faune WHERE nom LIKE '%$requete%'
) ORDER BY id DESC


et voilà ! j'espère être pas trop loin de ce que tu voulais...
0
linda.zazy Messages postés 297 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 2 février 2017 16
27 mai 2010 à 12:35
bonjour, merci !
j'ai éssayé ton script regarde le messsage d'érreur:

Every derived table must have its own alias



qu'est ce que ça veut dire?
0