Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Ayuda con una consulta relacionando tabla con inner join (http://www.forosdelweb.com/f86/ayuda-con-consulta-relacionando-tabla-con-inner-join-370963/)

ostayde 14/02/2006 07:19

Ayuda con una consulta relacionando tabla con inner join
 
Tengo dos tablas una llamada PDivisiones y la otra Divisiones, ambas comprende un campo tipo: int. Llamado id_division.

La columna id_division de la tabla PDivisiones comprende 3 registros. en cada uno contiene 1, 2 , 3.

El campo id_division de la tabla Divisiones comprende 50 registros. en cada una contiene 1, 2 ......50.

El query debe de extraer de la tabla Divisiones los campos id_division que no se encuentren en la tabla PDivisiones. Es decir deberia de mostrar del 4 al 50.

La consulta que plateo, perono funciona es la siguiente:

select Divisiones.id_division from Divisiones inner join PDivisiones on Divisiones.id_division != PDivisiones.id_division

Agradeceria mucho su ayuda

deadlykyo 14/02/2006 07:45

porque no intentas hacer la siguiente consulta:
Código PHP:

//
SELECT
  Divisiones
.id_division 
FROM 
  Divisiones
WHERE
  Divisiones
.id_division NOT IN (Divisiones INNER JOIN PDivisiones ON Divisiones.id_division PDivisiones.id_division )

// 

espero te sirva, cya

ostayde 14/02/2006 08:03

Gracias Deadlykyo, pero el manejador de base de datos que estoy empleando me arroja el siguiente error:

You have an error in your SQL syntax. Check the manual corresponde to your mySQL Server Versión for the right Syntax to use near 'Inner Join PDivisiones ON Divisiones ON Divisiones.id_divisiones=PDivisiones.

Soy nueva en base de datos Mysql. Agradeceria tu ayuda

deadlykyo 14/02/2006 08:15

Buena posible razon del error es por la version de tu mysql, ya que subconsultas solo funcionan a partir del 4.1.x en adelante, puedes ver la version haciendo un:
Código PHP:

//
mysql>SELECT VERSION(); 

ahora si no tal vez te funcione esto:

Código PHP:

//
SELECT
  Divisiones
.id_division 
FROM 
  Divisiones LEFT JOIN PDivisiones ON Divisiones
.id_division PDivisiones.id_division
WHERE
  Divisiones
.id_division IS NULL 

cya

ostayde 14/02/2006 08:49

deadlykyo

estoy utilizando mysql front, con esa herramienta estoy manejando la base de datos, solo acepta lenguaje sql, no procede php. Necesito hacer el query desde esa herramienta. Estoy casi segura que el problema es el in. creo que no acepta el esa sintaxis (in)

Los INNER JOIN si los acepta:

Por ejemplo:

1- con esta sintaxis= select Divisiones.id_division from Divisiones inner join PDivisiones on Divisiones.id_division = PDivisiones.id_division

Me selecciona los resgistros 1,2,3 ya que en ambas tablas se repiten dichos registros. De esta manera funciona ya que me trae todos los campos iguales de ambas tablas.

Entonces si a esa mismo select se le cambia el operador a diferente(<>) deberia hacer lo contrario. Y no lo hace.

ostayde 14/02/2006 08:57

Con el ultimo ejemplo que me indicaste:

SELECT Divisiones.id_division FROM Divisiones LEFT JOIN PDivisiones ON Divisiones.id_division = PDivisiones.id_division WHERE Divisiones.id_division IS NULL

No me da error, pero no me muestra lo esperado. Muestra es un solo registro que contiene null

deadlykyo 14/02/2006 09:37

bueno que version de mysql tienes, ahora lo que haces al hacer <>, != en tu consulta sigues haciendo un join entre las tablas pero entre los datos que no estan relacionados en otras palabras relacionas cada dato que no este en tu tabla con todos los de la otra tabla, ahora si no jalan subconsultas, la forma mas facil es la de crear una vista y usar la vista para tu consulta, cya

ostayde 14/02/2006 13:11

la versión que tengo de mysql efectivamente no admite in. Si utilizo join de todas manera no me funciona. Cual seria otra opción???????????????????????????????????????????? ????????????????????????????????????????

ostayde 14/02/2006 13:53

pude resolver el problema realmente muchas gracias

deadlykyo 14/02/2006 13:54

Mira creo que me equivoque en la anterior consulta, por que no intentas hacer esto:
Código PHP:

//
SELECT
  Divisiones
.id_division 
FROM 
  Divisiones LEFT JOIN PDivisiones ON Divisiones
.id_division PDivisiones.id_division
WHERE
  PDivisiones
.id_division IS NULL 

me equivoque en el where tal vez con esto obtengas lo que quieres, cya

ostayde 14/02/2006 14:07

exactamente de esa forma logre que la consulta me seleccionara lo esperado. Gracias


La zona horaria es GMT -6. Ahora son las 07:03.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.