Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema consulta mysql

Estas en el tema de Problema consulta mysql en el foro de Mysql en Foros del Web. Hola Tengo la siguiente tabla ID VALOR PADRE ----------------------------- 1 EMPLEOS 0 2 COCHES 3 3 MOTOR 0 4 MEDICO 1 5 ALBAÑIL 1 6 ...
  #1 (permalink)  
Antiguo 13/10/2009, 13:28
 
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 18 años, 6 meses
Puntos: 0
Problema consulta mysql

Hola

Tengo la siguiente tabla

ID VALOR PADRE
-----------------------------
1 EMPLEOS 0
2 COCHES 3
3 MOTOR 0
4 MEDICO 1
5 ALBAÑIL 1
6 BARCOS 3
7 FONTANERO 1


Mi pregunta es.. como hago para que me muestre en pantalla
Empleos
Medico
Albañil
Fontanero
Motor
Coches
Barcos

He probado con
SELECT TB1.nombre, TB2.nombre as hijo FROM contenido as TB1 LEFT JOIN contenido as TB2 ON TB1.id=TB2.padre WHERE 1 ORDERY BY TB1.id DESC

Pero no me sale... :( Cual seria la consulta adecuada?

Muchas gracias
  #2 (permalink)  
Antiguo 13/10/2009, 13:54
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Problema consulta mysql

Cita:
Iniciado por phanatick Ver Mensaje
Hola

Tengo la siguiente tabla

ID VALOR PADRE
-----------------------------
1 EMPLEOS 0
2 COCHES 3
3 MOTOR 0
4 MEDICO 1
5 ALBAÑIL 1
6 BARCOS 3
7 FONTANERO 1


Mi pregunta es.. como hago para que me muestre en pantalla
Empleos
Medico
Albañil
Fontanero
Motor
Coches
Barcos

He probado con
SELECT TB1.nombre, TB2.nombre as hijo FROM contenido as TB1 LEFT JOIN contenido as TB2 ON TB1.id=TB2.padre WHERE 1 ORDERY BY TB1.id DESC

Pero no me sale... :( Cual seria la consulta adecuada?

Muchas gracias

deberías primero hacerlo con una consulta para los padres y una consulta par los hijos y luego hacer un unión..

Nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 13/10/2009, 14:09
 
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Problema consulta mysql

SELECT valor FROM contenido WHERE padre=0 UNION SELECT valor FROM contenido WHERE padre = Y AQUI COMO UNO ESTE A LOS OTROS?

He probado varias cosas y nada... me sale todo disparado...
  #4 (permalink)  
Antiguo 13/10/2009, 14:14
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Problema consulta mysql

Cita:
Iniciado por phanatick Ver Mensaje
SELECT valor FROM contenido WHERE padre=0 UNION SELECT valor FROM contenido WHERE padre = Y AQUI COMO UNO ESTE A LOS OTROS?

He probado varias cosas y nada... me sale todo disparado...
unilos con la con un join donde padre sea distinto a 0 y uni las dos tablas.

tengo una pregunta solo dos niveles tenés, es decir solo un padre y un dato hijo?

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #5 (permalink)  
Antiguo 13/10/2009, 14:14
 
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Problema consulta mysql

Acabo de probar

$consulta=mysql_query("SELECT TB1.valor as categoria, TB1.id as idcat, TB2.valor as hijo, TB2.id as idhijo FROM contenido AS TB1 LEFT JOIN contenido AS TB2 ON TB1.id=TB2.padre WHERE 1 ORDER BY TB1.id DESC");

Esto me tira el mysql... se "peta" digamos.
  #6 (permalink)  
Antiguo 13/10/2009, 14:15
 
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Problema consulta mysql

Si, solo dos niveles.

Padre y varios hijos para un padre... si no se hacerlo asi.. imaginate si meto nietos jaja

Pero me gustaria saber como hacerlo la verdad.

Saludos
  #7 (permalink)  
Antiguo 13/10/2009, 14:16
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Problema consulta mysql

Cita:
Iniciado por phanatick Ver Mensaje
Esto me tira el mysql... se "peta" digamos.

eso no lo comprendo.. podes dar un dato extra..

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #8 (permalink)  
Antiguo 13/10/2009, 14:20
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Problema consulta mysql

Cita:
Iniciado por phanatick Ver Mensaje
Si, solo dos niveles.

Padre y varios hijos para un padre... si no se hacerlo asi.. imaginate si meto nietos jaja

Pero me gustaria saber como hacerlo la verdad.

Saludos
es.. así, bueno yo de hecho lo pongo todo en un tabla temporal y de alli en adelante hago la inserción de las lineas resultantes, pero considero que así te debería de funcionar

primero

selelct * from tbl_padres where id_padre = 0
Union
select * from tbl_hijos where id_padre <>0 and id_padre in (selelct id_padre from tbl_padres where id_padre = 0)

revisa sintaxis..

algo así se me viene a la mente..

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #9 (permalink)  
Antiguo 13/10/2009, 14:29
 
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Problema consulta mysql

$CONSULTA=mysql_query("SELECT nombre, id FROM contenido WHERE padre = 0 UNION SELECT nombre AS hijo FROM contenido WHERE padre!=0 AND padre IN (SELECT id FROM contenido WHERE padre=0)");

Siendo nombre el nombre del campo real, aqui puse valor.

Esta consulta me tira mysql abajo tambien...
  #10 (permalink)  
Antiguo 13/10/2009, 14:50
 
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Problema consulta mysql

creo que lo he solucionado, la consulta es similar a la ultima usada pero con LEFT JOIN.

$consulta=mysql_query("SELECT TB1.nombre AS hijo, TB1.id as idhijo, TB2.nombre, TB2.id FROM contenido as TB1 LEFT JOIN contenido AS TB2 ON TB1.padre=TB2.id WHERE 1 ORDER BY TB1.padre DESC LIMIT 500");

Me muestra los hijos ordenados por padre y en el mismo array me incluye el dato de los padres, asi tengo k hacer lo siguiente para mostrarlo.

while()
{
si padre es 1º vez que sale, muestro padre
muestro hijo

si padre no es 1º vez que sale, muestro solo hijo
}

asi hasta que recorre todo el array.

igual es un pelin chapuza, pero me sirve por el momento.

un saludo y gracias geoavila por tu ayuda!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:04.