Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/07/2012, 01:06
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: consultar 2 tablas con exepcion

Te dan error las dos que muestras, no?

Código MySQL:
Ver original
  1. SELECT id_solicitud,
  2.              nombre,
  3.              apellido
  4. FROM solicitud
  5. WHERE id_ciudad=$id_ciudad;

Esto da las solicitudes de la ciudad $id_ciudad


Código MySQL:
Ver original
  1. SELECT s.id_solicitud,
  2.              s.nombre,
  3.              s.apellido,
  4.              r.id_local
  5. FROM solicitud s INNER JOIN respuesta r ON s.id_solicitud=r.id_solicitud
  6. WHERE s.id_ciudad=$id_ciudad;

Esto da las solicitudes de la ciudad $id_ciudad y los locales que SI han contestado.

Para obtener los que NO han contestado, faltan datos, no se puede obtener de una tabla cosas que NO estan en ella...

Para solucionar lo que pides falta una tabla locales, con TODOS los locales, y estos supongo que estarán en una ciudad....

Tabla Locales
id_local
id_ciudad
datos...

Código MySQL:
Ver original
  1. SELECT s.id_solicitud,
  2.              s.nombre,
  3.              s.apellido,
  4.              l.id_local
  5. FROM (solicitud s INNER JOIN locales l on s.id_ciudad=l.id_ciudad)
  6. WHERE s.id_ciudad=$id_ciudad;

Esto nos daria una lista delas solicitudes de $id_ciudad repetidas para cada local de $id_ciudad.

Ahora vinculamos las respuestas

Código MySQL:
Ver original
  1. SELECT s.id_solicitud,
  2.              s.nombre,
  3.              s.apellido,
  4.              l.id_local
  5. FROM (solicitud s INNER JOIN locales l on s.id_ciudad=l.id_ciudad)
  6. LEFT JOIN respuesta r ON s.id_solicitud=r.id_solicitud AND r.id_local=l.id_local
  7. WHERE s.id_ciudad=$id_ciudad
  8. AND r.id_local IS NULL;

Uso left join para seguir con todos los registros de la consulta anterior, y luego filtro por los que no tienen respuesta.

Si he entendido bien lo que intentas esto lo soluciona, si no lo he entendido deberias explicarte mas y mejor....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/07/2012 a las 01:16