SQL - Multiconsulta con diferenciacion en campo

 
Vista:
sin imagen de perfil
Val: 9
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Multiconsulta con diferenciacion en campo

Publicado por mangazi (4 intervenciones) el 22/11/2018 19:02:17
Buenas a todos,

Tengo un pequeño problema con un ejercicio.

Tengo la siguiente tabla llamada ESCRITORIO con los siguientes campos

CDLAPIZ || CDMATE || CDUSO || CDCOLOR

matel || madera || p || rojo
hiebra || plastico || 4 || rojo
siena || politeno || p || naranja
bic || organico ||p || rojo

TABLA MATERIAL

CDLAPIZ || Fechadecaducidad
matel ||
hiebra || 30/11/2018
siena ||



La cosa es que quiero sacar una consulta donde pueda sacar los CDLAPIZ + CDMATE que no tengán "p" independientemente de si tienen "4" o no y ademas que ese material no este caducado

Estoy intentando hacerlo con un where not exists pero no acaba de funcionar, además de añadirle un AND donde diga Fechadecaducidad is null ( eso quiere decir que sigue en uso).

Alguien me puede decir alguna manera de hacerlo? se podría intentar con INNER JOIN( aunque no veo la manera)

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Multiconsulta con diferenciacion en campo

Publicado por xve (284 intervenciones) el 22/11/2018 22:39:28
No especificas el motor de base de datos que estas utilizando, pero en MySQL seria algo así:

1
2
3
SELECT *
FROM ESCRITORIO e LEFT JOIN MATERIAL m ON e.CDLAPIZ=m.CDLAPIZ
WHERE m.Fechadecaducidad IS NULL AND LOCATE("p", CONCAT(e.CDLAPIZ,e.CDMATE))>0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Multiconsulta con diferenciacion en campo

Publicado por mangazi (4 intervenciones) el 22/11/2018 23:57:57
disculpa, los comandos usados DML son con programa toad. creo que es un servidor microsoft server sql

me puedes explicar el >0 ???
aparte, donde pones 'p' , como lo relacionas con que estas buscando dentro del campo cduso?

mas que nada para entender como funciona.

muchas muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Multiconsulta con diferenciacion en campo

Publicado por xve (284 intervenciones) el 23/11/2018 07:46:39
El locate() lo que hace, es que busca la posición de "p" en la cadena, y devuelve su posición. Si devuelve 0, es que no la ha encontrado, por eso unicamente devolvería los registros que tuvieran la letra "p".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Multiconsulta con diferenciacion en campo

Publicado por mangazi (4 intervenciones) el 23/11/2018 07:57:58
Entiendo que te refieres a la "cadena"? a los campos, no? que va mirando campo a campo hasta encontrar la 'P' ?
Pensaba que había que ir a buscar directamente a CDUSO.
No podría surgir un error si encuentra algo escrito que incluya la consonante "'p" , como por ejemplo "pantalón" y se pensará que en el campo CDUSO si que existe la "p"?

Disculpa que pregunte tanto, es que me gustaría aprender.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Multiconsulta con diferenciacion en campo

Publicado por xve (284 intervenciones) el 23/11/2018 10:49:04
No, porque solo busca en los campos CDLAPIZ y CDMATE

1
LOCATE("p", CONCAT(e.CDLAPIZ,e.CDMATE))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Multiconsulta con diferenciacion en campo

Publicado por mangazi (4 intervenciones) el 23/11/2018 00:00:33
gracias por tu rapida respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar