2 votes

La sélection à partir de plusieurs tables renvoie un résultat vide

SELECT * 
  FROM traffic,alexat,bindx,blink 
 WHERE traffic.web = alexat.web 
   AND traffic.web = bindx.web 
   AND traffic.web = blink.web 
   AND traffic.web="mysql_real_escape_string($web)"

Lorsque je fais une recherche sur google.com et que l'une des tables ne contient pas de données relatives à google.com, le résultat est vide. Mais si toutes les tables contiennent des données relatives à google.com, le résultat apparaît sans problème. Je veux obtenir un résultat même si une seule table a des données .

1voto

Pablo Santa Cruz Points 73944

Vous devez utiliser LEFT OUTER JOIN .

Voici ce qu'il en est :

SELECT * 
  FROM traffic LEFT OUTER JOIN alexat USING (web)
  LEFT OUTER JOIN bindx USING (web)
  LEFT OUTER JOIN blink USING (web) 
 WHERE traffic.web="mysql_real_escape_string($web)"

0voto

cherouvim Points 18550

Vous avez besoin d'une jointure externe. Consultez les différentes options à l'adresse suivante http://en.wikipedia.org/wiki/Join_(SQL)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X