Ver Mensaje Individual
  #9 (permalink)  
Antiguo 30/07/2015, 15:23
Lentorro
 
Fecha de Ingreso: agosto-2014
Mensajes: 30
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problema con selects anidados

Pero vamos a ver, compañero Libras. Si pregunto es porque estoy trabajando en ese "Query" y tras mucho intentarlo no soy capaz de hacerlo funcionar. Cuando me das la solución... yo puedo ir quitando y cambiando cosas de la consulta, y viendo realmente cómo funciona y por qué. Además, en mis preguntas no suelo poner exactamente lo que trato de hacer, sino algo más general que me sirva para aprender. Por ejemplo, esta consulta en la que he estado trabajando, venía en un primer momento con la intención de conocer si alguno de los autos de una determinada (marca, modelo) se encontraba sin alquilar en una fecha determinada. Es MUY difícil aprender base de datos por uno mismo... Para mí, más difícil que html, css, php e incluso Java... y realmente hago un gran esfuerzo. El problema con bases de datos es que aprendo clausulas y funciones, pero luego me encuentro perdido al tratar de usar esos conocimientos para hallar lo que quiero. Si me dices algo como: «ahora lo que pides se puede poner dentro del where con un IN algo como esto»

Código SQL:

Código SQL:
Ver original
  1. SELECT * FROM clienteauto AS t1 WHERE Fk_matricula_auto IN ('matricula1','matricula2','matricula3')

Me dejas en las mismas, porque el problema es que no sé unir esta sentencia... a la que me dabas anteriormente.

@Soloyo

Lógicamente, lo que hago es copiar y pegar. A ver si, a partir de ahí y modificándola poco a poco, puedo entender la respuesta. La realidad es que con solo verla no me es suficiente para entenderlas porque tengo pocos conocimientos en la materia. Al igual que no me hubiera sido posible descubrir como debía ser la consulta analizando tu penúltimo post.

Código Mysql:

Código MySQL:
Ver original
  1. mysql> SELECT `Fk_matricula_auto`, fecha_inicio_alquiler, fecha_final_alquiler
  2.     -> FROM `clienteauto`
  3.     -> WHERE
  4.     ->     (fecha_inicio_alquiler NOT BETWEEN '2006-06-03' AND '2006-06-04')
  5.     ->     AND (fecha_final_alquiler NOT BETWEEN '2006-06-03' AND '2006-06-04')
  6.     ->     AND NOT (fecha_inicio_alquiler < '2006-06-03'  AND  fecha_final_alquiler > '2006-06-04');

Código Mysql:

Código MySQL:
Ver original
  1. mysql> SELECT `Fk_matricula_auto`, fecha_inicio_alquiler, fecha_final_alquiler
  2.     -> FROM `clienteauto`
  3.     -> WHERE
  4.     ->     (fecha_inicio_alquiler NOT BETWEEN '2006-06-08' AND '2006-06-09')
  5.     ->     AND (fecha_final_alquiler NOT BETWEEN '2006-06-08' AND '2006-06-09')
  6.     ->     AND NOT (fecha_inicio_alquiler < '2006-06-08'  AND  fecha_final_alquiler > '2006-06-09')
  7.     ->  and Fk_matricula_auto = 'abb1414';

Esas dos consultas eran lo que yo buscaba. De ellas pude sacar esta otra, la cual me permite saber si alguno de los autos que le paso a través de sus matrículas... no está alquilado a fecha de hoy.

Código Mysql:

Código MySQL:
Ver original
  1. SELECT `Fk_matricula_auto` FROM clienteauto where `Fk_matricula_auto` not in (SELECT `Fk_matricula_auto`
  2. FROM `clienteauto`
  3. WHERE (fecha_inicio_alquiler <= '2015-07-30'  AND  fecha_final_alquiler >='2015-07-30')
  4. AND (Fk_matricula_auto = 'abb141417' or Fk_matricula_auto = 'abb1414' or Fk_matricula_auto = '48731cda' or Fk_matricula_auto = 'abb1865'));

Cómo ves, no solo copio y pego, trato de entender cómo y por qué funciona.

Gracias a ambos por la ayuda.