Consulta mysql

Buenas tardes..

Necesito hacer una consulta de mysql y voy algo perdido con esta consulta y queria saber si podriais decidme como hacerla por favor..

La cosa es que necesito que me muestre los coches que su precio sea 1000€ o mas y que sean de la marca ibiza o seat.


PD: os dejo las tablas para ver si podeis ayudarme pliss..

CREATE TABLE USUARIO (
codigo INTEGER NOT NULL,
nombre varchar (200),
Email varchar(45),
telefono INTEGER NULL,
Fecha DATE,
paswordd VARCHAR(45),
PRIMARY KEY(Codigo)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE ANUNCIO (
codigo INTEGER NOT NULL,
titulo varchar(25),
comentario varchar(45),
precio_venta INTEGER,
imagen_vehiculo BLOB,
Fecha_anucio INTEGER,
contador INTEGER,
usuario_codigo INTEGER,
PRIMARY KEY(codigo),
CONSTRAINT FKIndex_marca_1 FOREIGN KEY(usuario_codigo) REFERENCES usuario(codigo) ON DELETE NO ACTION
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE MARCA (
codigo INTEGER NOT NULL,
descripcion varchar(325),
PRIMARY KEY(codigo)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE MODELO (
codigo INTEGER NOT NULL,
descripcion varchar(100),
PRIMARY KEY(codigo)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE COCHE (
codigo INTEGER NOT NULL,
MODELO_codigo INTEGER,
MARCA_codigo INTEGER,
matricula VARCHAR(10),
fecha_mat DATE,
PRIMARY KEY(codigo),
CONSTRAINT FKIndex_modelo FOREIGN KEY(MODELO_codigo) REFERENCES modelo(codigo) ON DELETE NO ACTION,
CONSTRAINT FKIndex_marca_2 FOREIGN KEY(MARCA_codigo) REFERENCES marca(codigo) ON DELETE NO ACTION
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE PRECIO (
Codigo INTEGER NOT NULL,
COCHE_codigo INTEGER NOT NULL,
COCHE_MODELO_codigo INTEGER NOT NULL,
COCHE_MARCA_codigo INTEGER NOT NULL,
precio_max_vehicu INTEGER,
precio_min_vehicu INTEGER,
PRIMARY KEY(codigo),
CONSTRAINT FKIndex_coche FOREIGN KEY(COCHE_codigo) REFERENCES coche(codigo) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT FKIndex_coche_modelo_3 FOREIGN KEY(COCHE_MODELO_codigo) REFERENCES coche(codigo) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT FKIndex_coche_marca_3 FOREIGN KEY(COCHE_MARCA_codigo) REFERENCES coche(codigo) ON DELETE NO ACTION ON UPDATE NO ACTION
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE TIPO_USER (
codigo INTEGER NOT NULL,
descripcion VARCHAR(200),
PRIMARY KEY(codigo),
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE CUENTA (
codigo INTEGER NOT NULL,
TIPO_user_codigo INTEGER,
USUARIO_Codigo INTEGER,
estado_cuenta varchar(20),
eliminar_cuenta varchar(45),
descripcion varchar(200),
PRIMARY KEY(Codigo),
CONSTRAINT FKIndex_usuario FOREIGN KEY(USUARIO_Codigo) REFERENCES usuario(codigo) ON DELETE NO ACTION,
CONSTRAINT FKIndex_tipo_user FOREIGN KEY(TIPO_user_codigo) REFERENCES TIPO_USER(codigo) ON DELETE NO ACTION
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE PAIS(
Codigo INTEGER NOT NULL,
Descripcion varchar(45),
PRIMARY KEY(Codigo),
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE PROVINCIA (
Codigo INTEGER NOT NULL,
PAIS_codigo INTEGER,
Descripcin varchar(200),
PRIMARY KEY(Codigo),
CONSTRAINT FKIndex_PAIS FOREIGN KEY(PAIS_codigo) REFERENCES PAIS(codigo) ON DELETE NO ACTION
)ENGINE=InnoDB DEFAULT CHARSET=utf8;




Muchas gracias por adelantado..

Saludos.
y... que es lo que has intentado?
JanKusanagi escribió:y... que es lo que has intentado?


Pues e intentado hacer alguna subconsulta e intentado hacer algo con alguna reunion pero es que no veo la forma de que salga , siempre se va a aotros apartados que no se yo ni de donde salen.

Saldos.
Me referia al codigo de la consulta que has intentado y que te da error o no acaba de ser correcta
JanKusanagi escribió:Me referia al codigo de la consulta que has intentado y que te da error o no acaba de ser correcta


Habia intentado algo como esto -->

SELECT precio_min_vehicu,COCHE_codigo,MARCA_codigo, descripcion
FROM precio,coche,marca
where precio_min_vehiculo = '1000' AND MARCA_codigo='seat'


En consultas de sql voy bastante perdido y ya no se de donde sacar mas e arreglado la base de datos para que no diera problemas y solo me queda hacer alguna consultila pero es que esta consulta no consigo que salga..

Saludos y gracias.
No he podido mirar mucho las tablas, pero mira a ver si así te funciona:

SELECT DISTINCT COCHE_codigo, precio_min_vehicu, MARCA_codigo, descripcion
FROM coche ,marca,precio
WHERE coche.codigo = precio.COCHE_CODIGO AND  coche.MARCA_CODIGO = marca.codigo AND
precio_min_vehicu >= '1000' AND (descripcion = 'ibiza' OR descripcion = 'seat')
Zorkky escribió:No he podido mirar mucho las tablas, pero mira a ver si así te funciona:

SELECT DISTINCT COCHE_codigo, precio_min_vehicu, MARCA_codigo, descripcion
FROM coche ,marca,precio
WHERE coche.codigo = precio.COCHE_CODIGO AND  coche.MARCA_CODIGO = marca.codigo AND
precio_min_vehicu >= '1000' AND (descripcion = 'ibiza' OR descripcion = 'seat')


El último "AND" se puede dejar en un IN => "AND descripcion IN ('ibiza', 'seat') y te ahorras unas letras jeje ; ) .
Zorkky escribió:No he podido mirar mucho las tablas, pero mira a ver si así te funciona:

SELECT DISTINCT t1.COCHE_codigo, t3.precio_min_vehicu, t2.MARCA_codigo, t1.descripcion
FROM coche t1, marca t2, precio t3
WHERE coche.codigo = precio.COCHE_CODIGO AND  coche.MARCA_CODIGO = marca.codigo AND
precio_min_vehicu >= '1000' AND (descripcion = 'ibiza' OR descripcion = 'seat')


No hace falta esto? el t1. t2. etc?
No, si referencias campos de tablas con el nombre de las mismas, lo del t1, t2 son alias para abreviar.

Un saludo.
Muchas gracias a todos por vuestra ayuda..Haber si puedo probarlo esta noche y os digo algo esta misma noche y si no mañana a la mañana os confirmo que me ha ido..

Muchisimas gracias..
Darthgon escribió:
Zorkky escribió:No he podido mirar mucho las tablas, pero mira a ver si así te funciona:

SELECT DISTINCT COCHE_codigo, precio_min_vehicu, MARCA_codigo, descripcion
FROM coche ,marca,precio
WHERE coche.codigo = precio.COCHE_CODIGO AND  coche.MARCA_CODIGO = marca.codigo AND
precio_min_vehicu >= '1000' AND (descripcion = 'ibiza' OR descripcion = 'seat')


El último "AND" se puede dejar en un IN => "AND descripcion IN ('ibiza', 'seat') y te ahorras unas letras jeje ; ) .


exacto, no recordaba bien cómo era el IN / NOT IN y preferí no arriesgar xD


SyTo escribió:...

si te da error o algo pon el mensaje que te dé
SyTo escribió:Muchas gracias a todos por vuestra ayuda..Haber si puedo probarlo esta noche y os digo algo esta misma noche y si no mañana a la mañana os confirmo que me ha ido..

Muchisimas gracias..


hehehe, si , es lo que tu dices, pongo los alias ya por inercia, pero lo importante es la referencia a la tabla,
Muchas Gracias y siento tanto el tardar e contestar pero es que mi internet hoy parece que va cuando quiere y cuando quiere ir tarda 3 horas para abrir alguna cosa.

He probado lo que me habeis comentado antes pero no me devuelve nada y deberian salir todos los coches con esa marca ya que todos como minimo valen 1000 pero nada de nada me saca un valor vacio..

la consulta que e intentado hacer es la que hamablemente me habeis dicho
SELECT DISTINCT COCHE_codigo, precio_min_vehicu, MARCA_codigo, descripcion
FROM coche ,marca,precio
WHERE coche.codigo = precio.COCHE_CODIGO AND coche.MARCA_CODIGO = marca.codigo AND
precio_min_vehicu >= '1000' AND (descripcion = 'ibiza' OR descripcion = 'seat')


no lo cambio al IN por que me da igual ahorrame letras simplemente quiero que funcione }:/ }:/


Por otro lado e estado revisando la tabla y los precios los e metido en la columna de coche dejando algo asi.

Tabla coche

CREATE TABLE COCHE (
codigo INTEGER NOT NULL,
USUARIO_codigo INTEGER,
MARCA_codigo INTEGER,
PROVINCIA_codigo INTEGER,
matricula VARCHAR(10),
fecha_mat DATE,
Precio_min_vehicu INTEGER,
Precio_max_vehicu INTEGER,

PRIMARY KEY(codigo),
CONSTRAINT FKIndex_marca_2 FOREIGN KEY(MARCA_codigo) REFERENCES marca(codigo) ON DELETE NO ACTION,
CONSTRAINT FKIndex_provincia_7 FOREIGN KEY(PROVINCIA_codigo) REFERENCES provincia(codigo) ON DELETE NO ACTION,
CONSTRAINT FKIndex_usuario_6 FOREIGN KEY(USUARIO_codigo) REFERENCES usuario(codigo) ON DELETE NO ACTION
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


La de marca sigue siendo la misma que es esta
CREATE TABLE MARCA (
codigo INTEGER NOT NULL,
descripcion varchar(325),
PRIMARY KEY(codigo)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


Tambien os dejo lo que e introducido en las tablas que se me habia olvidado para que veais que los coches valen mal de 1000

Datos de marca

INSERT INTO MARCA (codigo, descripcion) VALUES ('0001', 'honda');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0002', 'toyota');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0003', 'seat');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0004', 'ibiza');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0005', 'seat');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0006', 'seat');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0007', 'seat');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0008', 'ibiza');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0009', 'audi');
INSERT INTO MARCA (codigo, descripcion) VALUES ('0010', 'ibiza');


Y ahora os dejo la de coche:

INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0001', 'A9676CA', '1990/02/03', '5000', '10000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0002', 'A9675CA', '1990/02/03', '5000', '15000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0003', 'A9673CA', '1990/02/03', '5000', '13000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0004', 'A9336CA', '1990/02/03', '5000', '27000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0005', 'A9276CA', '1990/02/03', '5000', '18000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0006', 'A9176CA', '1990/02/03', '5000', '16000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0007', 'A9456CA', '1990/02/03', '5000', '15000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0008', 'A9676CA', '1990/02/03', '5000', '23000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('0009', 'A9666CA', '1990/02/03', '5000', '12000');
INSERT INTO COCHE (codigo, matricula, fecha_mat, precio_min_vehicu, precio_max_vehicu) VALUES ('00010','A7976CA', '1990/02/03', '5000', '26000');


Haber si asi conseguimos sacarlo mejor, y disculpar por pedir ayuda pero es que en hacer el fichero .sql no tengo problemas en el modelo relacional y entidad-relacion tampoco per es que es llegar a las consultas y perderme pero bien perdio.

Muchas Gracias..
en el campo MARCA_codigo de la tabla COCHE no introduces nada?

edit: la consulta queda obsoleta con el cambio estructural que has hecho

y para qué pones varias veces la misma marca en la tabla MARCA? ?¿
Zorkky escribió:en el campo MARCA_codigo de la tabla COCHE no introduces nada?

edit: la consulta queda obsoleta con el cambio estructural que has hecho

y para qué pones varias veces la misma marca en la tabla MARCA? ?¿


Por ejemplo e tenido que hacer una instruccion que me saque todos los coches con diversas marcas (algo facilito) y e puesto unos cuantos para que salgan esos y no solo 1 que queda muy feo jajaja.

¿Podeis echarme una mano con la consulta que hay que hacer con la nueva configuracion de la base de datos? por favor que ando muy liaillo con esto.

Saludos.
pero una fila tendría que ser una marca diferente, tal y como lo has puesto es como si hubiesen diferentes marcas que da la casualidad tienen el mismo nombre, por lo que si se busca aquéllas cuyo nombre sea "seat" o "ibiza" se falsearán los resultados

y faltaría lo de rellenar el campo MARCA_codigo en la tabla COCHE, no has puesto nada? sino no hay relación coche/marca
Zorkky escribió:pero una fila tendría que ser una marca diferente, tal y como lo has puesto es como si hubiesen diferentes marcas que da la casualidad tienen el mismo nombre, por lo que si se busca aquéllas cuyo nombre sea "seat" o "ibiza" se falsearán los resultados

y faltaría lo de rellenar el campo MARCA_codigo en la tabla COCHE, no has puesto nada? sino no hay relación coche/marca


Pues lo cambio pero ya mismo, pensaba que asi estaba bien, que como no es la clave primaria no pasaria nada.


Y lo otro se lo añado ahora tambien ....

EDITO: Arreglado esas dos cosillas.

Gracias.
16 respuestas