Comunidad de diseño web y desarrollo en internet online

Inexperiencia con JOIN

Citar            
MensajeEscrito el 31 Jul 2008 04:10 pm
Buenas tardes,

quiero realizar una consulta que involucra 4 tablas, y que los resultados devueltos contengan solo registros con contenido.

SELECT com.id_categoria, com.id_subcategoria, com.competicion_nombre, cat.categoria_nombre, sub.subcategoria_nombre, cla.enlace, cla.id_clasificacion
FROM deportes_competiciones AS com
JOIN deportes_categorias AS cat
ON com.id_categoria=cat.id_categoria
JOIN deportes_subcategorias AS sub
ON com.id_subcategoria=sub.id_subcategoria
JOIN deportes_clasificacion AS cla
ON com.id_competicion = cla.id_competicion
WHERE com.temporada="2008/2009"
ORDER BY cat.orden DESC, sub.orden DESC


En este caso, no quiero que se muestren las filas en las que clasificacion no contiene registros.
He intentado poner lineas como "AND cla.id_clasificacion IS NOT NULL" y cosas asi, pero no consigo nada.

Es decir, teniendo las tablas A y B, que el resultado no contenga registros en A que no tengan equivalencia en B (siendo en este caso A = deportes_competiciones y B = deportes_clasificaciones.

Espero que podais ayudarme.

Un saludo.

Por akhasis

75 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Jul 2008 04:15 pm

Código :

SELECT 
      com.id_categoria, 
      com.id_subcategoria, 
      com.competicion_nombre, 
      cat.categoria_nombre, 
      sub.subcategoria_nombre, 
      cla.enlace, cla.id_clasificacion
FROM deportes_competiciones AS com
INNER JOIN deportes_categorias AS cat ON com.id_categoria=cat.id_categoria
INNER JOIN deportes_subcategorias AS sub ON com.id_subcategoria=sub.id_subcategoria
INNER  JOIN deportes_clasificacion AS cla ON com.id_competicion = cla.id_competicion
WHERE com.temporada="2008/2009"
ORDER BY cat.orden DESC, sub.orden DESC


Duda, ¿subcategorias no tiene id_categoria a la que pertenece?

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 Ago 2008 03:11 pm
Muchas gracias Maikel,

después de mucho trastear la base de datos, me he dado cuenta de que mi error no está en esa consulta sino en otra que hago anterior.

No obstante, tras examinar tu código, me surgió la siguiente duda: cuándo es necesario usar "inner join" en lugar de "join"? He estado buscando en internet y no encuentro la respuesta, pero por los ejemplos que veo me parece que son equivalentes, o que cuando no especificas el tipo de join se utiliza inner por defecto. ¿es así?

Gracias y un saludo.

Por akhasis

75 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.