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

[AYUDA]Select anidado o subconsultas

Estas en el tema de [AYUDA]Select anidado o subconsultas en el foro de Mysql en Foros del Web. Tengo un problema con una consulta para listar todas las sucursales de un departamento o municipio; para ser mas especifico la consulta que trato de ...
  #1 (permalink)  
Antiguo 04/07/2016, 17:44
 
Fecha de Ingreso: febrero-2016
Mensajes: 16
Antigüedad: 8 años, 2 meses
Puntos: 0
[AYUDA]Select anidado o subconsultas

Tengo un problema con una consulta para listar todas las sucursales de un departamento o municipio; para ser mas especifico la consulta que trato de hacer es en un departamento hay varios municipios o localidades y en cada uno de ellos puede haber mas de una sucursal y dichas sucursales pueden manejar mas sucursales, el codigo es mas o menos asi:

Código SQL:
Ver original
  1. SELECT * FROM sucursales
  2. WHERE id_mun IN (SELECT id_suc FROM sucursales WHERE id_suc = xxxx)

Código SQL:
Ver original
  1. SELECT * FROM sucursales
  2. WHERE id_mun IN (SELECT id_suc FROM sucursales WHERE id_suc = xxxx = $var2)

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
En dicha consulta solo me despliega todas las sucursales del ultimo valor, pero de las anteriores solo muestra el primero y no se como hacer que me despliegue en los valores anteriores, bien sea con la consulta o con codigo php.

Última edición por gnzsoloyo; 05/07/2016 a las 10:58
  #2 (permalink)  
Antiguo 04/07/2016, 20:48
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: [AYUDA]Select anidado o subconsultas

Eso es php NO una sentencia SQL.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 05/07/2016, 11:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: [AYUDA]Select anidado o subconsultas

Tus consultas son inconsistentes. En pocas palabras, no tienen sentido.

Si la tabla SUCURSALES tiene su PK como ID_SUC, la cual determina el número de sucursal en cuestión, y se vinculan a los municipios por el campo ID_MUN, entonces estás relacionando caballso con manzanas cuando haces:
Código SQL:
Ver original
  1. SELECT * FROM sucursales
  2.     WHERE id_mun IN (SELECT id_suc FROM sucursales WHERE id_suc = xxxx)
porque intentas relacionar el ID del MUNICIPIO con el ID de la SUCURSAL.... son datos diferentes. No representan lo mismo.

Por otro lado, cuando haces esto:
Código SQL:
Ver original
  1. WHERE id_suc = xxxx = $var2

no estás escribiendo SQL. Puede ser cualquier cosa, incluso Smalltalk, pero NO ES SQL.

Si lo que quieres es que te devuelva todas las sucursales de un municipio, la cosa necesita la tabla de municipios. Algo como:


Código SQL:
Ver original
  1. SELECT s.*
  2. FROM sucursales S
  3.     INNER JOIN municipios M ON S.id_mun M-id_mun;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 05/07/2016, 12:18
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 1 mes
Puntos: 8
Respuesta: [AYUDA]Select anidado o subconsultas

Cita:
Iniciado por thezyrax Ver Mensaje
Tengo un problema con una consulta para listar todas las sucursales de un departamento o municipio; para ser mas especifico la consulta que trato de hacer es en un departamento hay varios municipios o localidades y en cada uno de ellos puede haber mas de una sucursal y dichas sucursales pueden manejar mas sucursales, el codigo es mas o menos asi:

Código SQL:
Ver original
  1. SELECT * FROM sucursales
  2. WHERE id_mun IN (SELECT id_suc FROM sucursales WHERE id_suc = xxxx)

Código SQL:
Ver original
  1. SELECT * FROM sucursales
  2. WHERE id_mun IN (SELECT id_suc FROM sucursales WHERE id_suc = xxxx = $var2)



En dicha consulta solo me despliega todas las sucursales del ultimo valor, pero de las anteriores solo muestra el primero y no se como hacer que me despliegue en los valores anteriores, bien sea con la consulta o con codigo php.
Lo que no entiendo es porque relacionas id_num (id del municipio) con el id_suc (id_sucursal) cuando las relaciones se hacen por el nombre del campo (por lo general).. puede que por ello solo te muestre el último registro que indicas porque estas relacionando mal tus campos.

Saludos.
  #5 (permalink)  
Antiguo 05/07/2016, 12:33
 
Fecha de Ingreso: febrero-2016
Mensajes: 16
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: [AYUDA]Select anidado o subconsultas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Tus consultas son inconsistentes. En pocas palabras, no tienen sentido.

Si la tabla SUCURSALES tiene su PK como ID_SUC, la cual determina el número de sucursal en cuestión, y se vinculan a los municipios por el campo ID_MUN, entonces estás relacionando caballso con manzanas cuando haces:
Código SQL:
Ver original
  1. SELECT * FROM sucursales
  2.     WHERE id_mun IN (SELECT id_suc FROM sucursales WHERE id_suc = xxxx)
porque intentas relacionar el ID del MUNICIPIO con el ID de la SUCURSAL.... son datos diferentes. No representan lo mismo.

Por otro lado, cuando haces esto:
Código SQL:
Ver original
  1. WHERE id_suc = xxxx = $var2
Perdon no fui muy especifico a la hora de explicar, en cuanto a tu punto se me olvido mencionar que para el ejercicio que estoy realizando cada municipio cuenta tambien como una sucursal tambien y por eso mismo lo uso, o bueno asi es como lo concebi en mi mente; supongamos el municipio 1 tambien es la sucursal 1 y tiene x sucursales, de igual forma el municipio 2, 3, 4, etc; a medida que un municipio abra sucursal este recibe un codigo de municipio o localidad y sucursal a la vez.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si lo que quieres es que te devuelva todas las sucursales de un municipio, la cosa necesita la tabla de municipios. Algo como:


Código SQL:
Ver original
  1. SELECT s.*
  2. FROM sucursales S
  3.     INNER JOIN municipios M ON S.id_mun M-id_mun;
Soy un poco nuevo con esto de las consultas y la verdad no capto la consulta

Etiquetas: php
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 08:53.