pb de DISTINCT sur 2 tables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb de DISTINCT sur 2 tables

par VaN » 28 juil. 2005, 17:48

Tu fait un
or die(mysql_error())
quand tu exécute tes requetes ?
oui, mais il stop le script juste, et ne m'affiche pas l'erreur, probleme d'affichage dû a je ne sais quoi(il faudrait que je crée un div special pour afficher l'erreur sur la page). donc je passe par phpmyadmin pour voir l'erreur depuis la bdd.

par VaN » 28 juil. 2005, 17:46

SELECT DISTINCT (a.date,  m.date) FROM articles AS a, media_articles AS m 
testé dans phpmyadmin, qui me renvoie ça :

#1064 - Erreur de syntaxe près de ' m.date )
FROM articles AS a, media_articles AS m LIMIT 0, 30' à la ligne 1

par mere-teresa » 28 juil. 2005, 17:31

peux tu tester dans Eskuel ou PHPMyAdmin ?

par zeus » 28 juil. 2005, 17:30

Mais réflechi un peu, si les noms se chevauchent, tu mets 2 nom différents ... :shock:
date_table1 et date_table2 par exemple ... :roll:

Sinon, je ne suis pas sûr que tu puisse utiliser plusieurs DISTINCT dans une même requete ...

Tu fait un
or die(mysql_error())
quand tu exécute tes requetes ?

par mere-teresa » 28 juil. 2005, 17:30

SELECT DISTINCT (a.date,  m.date) FROM articles AS a, media_articles AS m 

par VaN » 28 juil. 2005, 17:27

après plusieurs essais, je n'arrive toujours pas a trouver la solution :
<?php
$sql_sort = "SELECT DISTINCT articles.date AS date, DISTINCT media_articles.date AS date FROM articles, media_articles";
?>
<?php
$sql_sort = "SELECT DISTINCT articles.date, DISTINCT media_articles.date AS date FROM articles, media_articles";
?>
<?php
$sql_sort = "SELECT (DISTINCT articles.date, DISTINCT media_articles.date) AS date FROM articles, media_articles";
?>
Mieux, tu donnes un alias à ton nom de colonne

Code : Tout sélectionner

SELECT DISTINCT nom_table.date AS date FROM ...
Et ensuite, tu peut travailler sur le champ "date" comme tu le faisait avant
le pb est que j'ai deux table, donc je vais avoir deux AS date, donc le pb revient au meme : /

par zeus » 28 juil. 2005, 16:52

Mieux, tu donnes un alias à ton nom de colonne

Code : Tout sélectionner

SELECT DISTINCT nom_table.date AS date FROM ...
Et ensuite, tu peut travailler sur le champ "date" comme tu le faisait avant

Mais je me permet de te reposer la question, ets-ce que tu as exécuter la requete depuis PHPMyAdmin pour voir le résultat ? parce que je ne suis pas sûr que tu demande un produit cartésien (pour chaque enregistrement de la 1ere table, tu affiche tout les enregistrements de la seconde table, soit nb_enre_table1 * nb_enre_table2 enregistrements).

par VaN » 28 juil. 2005, 16:47

oui en fait j'avais comprit que le probleme venait de la, mais prefixer mes champs par le nom des tables va me poser un autre probleme pour la suite :
<?php
$sql_sort = "SELECT DISTINCT date FROM articles, media_articles";
		$query_sort = mysql_query($sql_sort) OR die ("Error : ".mysql_error());
		while ($result_sort = mysql_fetch_array($query_sort)) {
		$date_exp = explode("-",$result_sort['date']);
		$mois_exp = $date_exp[1];
		$annee_exp = $date_exp[0];
?>
si je prefixe, je ne saurais plus sur quel champ effectuer mon explode(). Il faudrait que "je fusionne" les deux champs date pour en créer un seul, c'est possible ?

par mere-teresa » 28 juil. 2005, 16:40

Préfixe le nom de tes champs par le nom de la table.

par zeus » 28 juil. 2005, 16:39

Si tu regarde le message d'erreur, il te dit que le champs date existe dans les 2 tables et qu'il ne sait pas sur lequel trier.

Donc il faut que tu fasse

Code : Tout sélectionner

SELECT DISTINCT nom_table.date FROM ...
Ensuite, si tu voulait que les 2 tables soient retournées en fonction d'un champ commum, c'est pas la bonne syntaxe

pb de DISTINCT sur 2 tables

par VaN » 28 juil. 2005, 16:30

<?
$sql = "SELECT DISTINCT date FROM articles, media_articles";
?>
sql n'a pas l'air d'aimer le fait de faire un DISTINCT sur 2 tables différentes car il me renvoie :

#1052 - Champ: 'date' dans field list est ambigu

pourtant j'aimerais généré mon <select> à partir des dates contenus dans ces deux tables, mais avec 1 seule occurence de chaque date. comment dois-je m'y prendre ?