|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : octobre 2005 Messages : 122 ![]() |
Bonjour,
Je suis en train de réaliser une requête sur plusieurs tables... J'aimerais chercher les 7 derniers enregistrements sur 2 tables, en mélangeant les deux tables (pour faire comme si s'en n'était qu'une seule, et je précise qu'elles ont les mêmes champs). Voilà donc ce que je fais : Code :
$sql_search_topics_forums = "SELECT id, sujet, auteur, date_dern, vu, nb_rep, forum FROM v2_forum1_sujets, v2_forum2_sujets ORDER BY date_dern DESC LIMIT 7"; Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/t/e/s/[etc.] on line 362 Ligne 362 : $total_search_topics_forums = mysql_num_rows($req_search_topics_forums); J'en conclue donc que ma synthaxe est mauvaise (c'est la première fois que je fais une requete sur 2 tables Merci d'avance pour ceux qui me répondront. |
|
|
00
|
|
|
#2 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
C'est que la requête (mysql_query) retourne FALSE car il y a une erreur. Rajoutez or die(mysql_error()); derrière l'appel à cette dernière.
|
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() |
Et utilisez les jointures pour être sûr d'obtenir le résultat désiré.
|
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : octobre 2005 Messages : 122 ![]() |
Erreur retournée : "Column 'id' in field list is ambiguous".
Ok, comment utiliser les jointures dans mon cas ? (j'ai fait quelques essais, mais qui ne me donnent pas le résultat désiré (je le rapplle : qui est de faire ces deux tables comme s'il n'y en avait qu'une)). |
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() |
ouais ben t'aurais dû envoyer ton erreur dès le début.
Cela signifie que tes deux tables on le même nom de champ chacune et que le moteur SQL ne sait pas lequel choisir parmi les deux tables. il faut que tu mettes le nom de la table en préfixe ou un alias du nom de la table |
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Inscription : octobre 2005 Messages : 122 ![]() |
Oui, mais tu ne m'aides pas beaucoup
Je sais qu'il faut que je rajoute des préfixes, et j'ai d'ailleurs testé... Mais si je mets une des deux tables en préfixe, il ne cherchera que sur celle-ci, alors que j'ai absolument besoin qu'il prenne les deux en considération... |
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() |
Parce que je ne peux pas t'aider plus par rapport à ce que tu me donnes comme information.
Donne nous les noms des champs de tes tables et je vais te faire la requête. Dis aussi exactement ce que tu veux obtenir comme résultat car là, tu donnes trop peu d'indications pour qu'on t'aide |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() |
Oublie mon post précédent. Il y a encore mieux si tes tables SQL ne sont pas trop grosses exporte les en fichier SQL et envoie moi le fichier par MP et je testerai ma requête avant de la poster sur le forum.
|
|
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : octobre 2005 Messages : 122 ![]() |
J'ai essayé de la jouer à la précision pourtant
Donc j'ai deux tables : v2_forum1_sujets et v2_forum2_sujets Ces deux tables sont exactements les mêmes sauf qu'elles ont des enregistrements différents (logique). Ces deux tables contiennent chacune les informations des sujets créés sur les 2 forums de mon site. La requete que j'essaye de faire est utilisée sur la page d'accueil du site, afin de lister les 7 derniers sujets actifs, les 2 forums mélangés (que le résultat s'affiche comme si on ne puisait que dans une table). Les différents champs que je veux récupérer sont (les mêmes noms de champs sur chacune des deux tables) : id, sujet, auteur, date_dern, vu, nb_rep, forum Et on ordonne par le champ : date_dern (qui contient une date et qui est également le même ds les deux tables) Voilà plus précis Est-ce que ça t'aide pour la compréhension ? |
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() |
J'en doute pas un instant
Parfaitement!!! Donc ta requête doit être Code :
$sql_search_topics_forums = "SELECT f1.id, f2.id, sujet, auteur, date_dern, vu, nb_rep, forum FROM v2_forum1_sujets AS f1, v2_forum2_sujets AS f2 ORDER BY date_dern DESC LIMIT 7"; Je me pose une question: Pourquoi deux tables différentes avec des champs identiques?? Il doit y avoir mauvaise conception quelque part. |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : octobre 2005 Messages : 122 ![]() |
Non, pas d'erreur de conception : je fais un forum à ma façon, c'est tout
http://testscolaire.ovh.org/vv2/fr/index.php > Le résultat est un peu spécial : J'ai arrangé ta requete comme ça : Code :
$sql_search_topics_forums = "SELECT f1.id, f2.id, f1.sujet, f2.sujet, f1.auteur, f2.auteur, f1.date_dern, f2.date_dern, f1.vu, f2.vu, f1.nb_rep, f2.nb_rep, f1.forum, f2.forum FROM v2_forum1_sujets AS f1, v2_forum2_sujets AS f2 ORDER BY f1.date_dern, f2.date_dern DESC LIMIT 7"; |
|
|
00
|
|
|
#12 |
|
Membre à l'essai
![]() Inscription : octobre 2005 Messages : 122 ![]() |
En fait il n'y a que 2 enregistrement dans la table v2_forum2_sujets et il retourne donc ces deux enregistrement en boucle. Il ne semble pas prendre la table v2_forum1_sujets en considération...
|
|
|
00
|
|
|
#13 |
|
Membre chevronné
![]() |
Le fait que tu fasses un forum à ta façon ne signifie pas qu'il est exempt de toute erreur de conception. Il y a des règles très strictes à respecter pour la conception d'une base de données et il y a plein de tutoriels sur developpez.com qui les expliquent de façon très claire même pour un débutant.
Je maintiens que deux tables identiques dans une même base de données est illogique quand on peut en faire une seule quitte à ajouter une colonne qui pourrait être nommé id_forum. Et cela simplifierai énormément ta requête de recherche pour ce que tu cherches à faire. |
|
|
00
|
|
|
#14 |
|
Membre à l'essai
![]() Inscription : octobre 2005 Messages : 122 ![]() |
Je vois pas en quoi avoir plusieurs tables identiques posent un problème... A l'oeil c'est la même chose. Moi je suis un particulier : pour moi tant qu'il n'y a pas d'erreur affichées, c'est l'essentiel : c'est comme avec mon css... qu'il soit valide ou pas, j'en ai pas grand chose à faire, le principal est que l'ensemble graphique soit affiché comme je le souhaite
Ca fait quatre ans que je gère des bases de données. Je pourrais faire un forum classique sans problème... Sauf que là je suis en train d'y ajouter des fonctions spéciales uniquement pour certains forums, d'où le fait que j'aie choisis une table pour un forum (et comme ça j'ai aussi un fichier php par forum, c'est peut-être plus lourd mais très pratique pour l'ajout de mes fonctions). Après pour la complication du script, pas d'idée ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com