Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Logica de sentencia SQL

Estas en el tema de Logica de sentencia SQL en el foro de PHP en Foros del Web. Buen Dia amigos, Estoy quebrandome la cabeza para generar consultas SQL anidadas... veran tengo 2 tablas, una de categorias y otra de mensajes... tengo la ...
  #1 (permalink)  
Antiguo 18/02/2016, 14:24
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.030
Antigüedad: 8 años, 8 meses
Puntos: 150
Logica de sentencia SQL

Buen Dia amigos,

Estoy quebrandome la cabeza para generar consultas SQL anidadas... veran tengo 2 tablas, una de categorias y otra de mensajes...
tengo la opcion desde el admin de mi sistema de deshabilitar X categoria, pero en un board donde se muestran TODOS los mensajes se siguen mostrando los mensajes de las categorias deshabilitadas... quiero generar una SQL que me muestre todos los mensajes omitiendo los que tienen una categoria deshabilitada, tengo esto:

Código PHP:
$sql_prod "SELECT * FROM mensajes WHERE habilitado='0' ORDER BY mid ASC; 
mid es la id de cada mensaje, tambien en la tabla de mensajes esta cid, que guarda el id de categoria al cual pertenece.

Campo "habilitado" donde 0 = habilitado y 1= deshabilitado, en la tabla de categorias...

pueden ayudarme?
  #2 (permalink)  
Antiguo 18/02/2016, 14:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: Logica de sentencia SQL

Los temas relacionados con consultas de SQL, específicamente, debes hacerlas en el foro de base de datos; en el foro de PHP no tiene mucho sentido.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/02/2016, 14:54
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.030
Antigüedad: 8 años, 8 meses
Puntos: 150
Respuesta: Logica de sentencia SQL

Gracias... lo he solucionado leyendo un poco.
dejo aqui como quedo por si le sirve a alguien mas...

Código PHP:
$sql_prod "SELECT * FROM mensajes WHERE habilitado='0' AND cid NOT IN (SELECT cid FROM categorias WHERE habilitado='1') ORDER BY mid ASC; 
  #4 (permalink)  
Antiguo 18/02/2016, 15:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Logica de sentencia SQL

Hay medios menos complicados:
Código SQL:
Ver original
  1. SELECT m.*
  2. FROM mensajes m INNER JOIN categorias c ON m.cid = c.cid
  3. WHERE m.habilitado=0 AND c.habilitado=1
  4. ORDER BY m.mid ASC
Esta forma es mas eficiente...

Nota: No trates los valores numéricos como cadenas de texto. Es un método erróneo que esconde defectos en los datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: anidadas, mysql, sentencia, sql
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 11:52.