consulta SQL

NeB1

Buenas a todosss, tengo una consulta tal que:

SELECT t1.id , t1.nombre AS Nombre , t1.descripcion AS Descripcion, count( t2.id ) AS responsables
FROM procedencia AS t1, responsable AS t2
WHERE t1.id = t2.idProcedencia
GROUP BY t1.id

Donde me saca un listado de la tabla 'procedencia', y un campo que es el numero de responsables (count...), vinculados a dicha 'procedencia' (espero que se entienda).

Va todo perfecto, pero falla si, una procedencia, no tiene ningún responsable vinculado, ya que entonces no me saca nada de esa 'procedencia'.

Como se dice "en caso de que haya alguno relacionado" y no "que tenga uno o más relacionados" que parece que es lo que saca ahora?

Beavis

FROM procedencia AS t1 LEFT JOIN responsable AS t2 ON (t1.id = t2.idProcedencia)

C

En SQL ANSI se utilizar OUTER delante de la tabla que quizás no tenga datos vinculados.

En tu caso:

SELECT t1.id , t1.nombre AS Nombre , t1.descripcion AS Descripcion, count( t2.id ) AS responsables
FROM procedencia AS t1, outer responsable AS t2
WHERE t1.id = t2.idProcedencia
GROUP BY t1.id

http://sentidoweb.com/2007/10/22/outer-joins-en-sql.php

1 mes después
NeB1

Al final era una combinación de #2 y #3 xD

era LEFT OUTER JOIN, ni left join, ni outer a secas. De todas gracias muchísimas gracias, ya que yo no tenía ni papa, y me indicasteis el camino.

Usuarios habituales

  • NeB1
  • Beavis