Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

es posible crear una consulta asin...

Estas en el tema de es posible crear una consulta asin... en el foro de Mysql en Foros del Web. Hola, entre en este foro por si algun experto me puedo aclarar mi duda, trata de hacer una consulta donde se cumpla un campo o ...
  #1 (permalink)  
Antiguo 13/12/2011, 06:48
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
es posible crear una consulta asin...

Hola, entre en este foro por si algun experto me puedo aclarar mi duda, trata de hacer una consulta donde se cumpla un campo o otro por ejemplo tengo esta tabla.

tabla
auto
coche1
coche2
coche3

color
rojo
verde
azul

matricula
111
222
333

si tengo algo como eso, es posible recuperar el registro con una matricula en concreto pero da igual el color o el auto que se cumpla una de las dos, esta consulta es posible, saludos.
  #2 (permalink)  
Antiguo 13/12/2011, 07:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: es posible crear una consulta asin...

No se te entiende

si esos tres campos estan en la tabla autos


SELECT * FROM autos where matricula='333'

Te dará el auto con esa matricula (coche3) independientemente de los otros campos

SELECT * FROM autos where matricula='333' OR color='rojo'

Te dará coche1 y coche3

SELECT * FROM autos where matricula='333' AND color='rojo'

No te dará nada...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 13/12/2011, 08:46
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: es posible crear una consulta asin...

hola quimfv, asin seria correcto:

SELECT * FROM autos where matricula='333' and auto='coche3' OR color='rojo'

yo probe asin pero claro no me funciona me devuelve todos los registros con el campo coche3 o color rojo, esto es lo que quiero pero si la matricula no coincide me los devuelve igual, es eso lo que quiero evitar que me devuelva esa matricula independiente mente de si es coche3 o color rojo, espero que me podais ayudar, saludos.

Última edición por pithon; 13/12/2011 a las 09:14
  #4 (permalink)  
Antiguo 13/12/2011, 10:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: es posible crear una consulta asin...

Cita:
es eso lo que quiero evitar que me devuelva esa matricula independiente mente de si es coche3 o color rojo
Es un poco de lógica aplicada: Si lo que quieres es que no te devuelva esa matrícula, pues exclúyela:
Código MySQL:
Ver original
  1. SELECT * FROM autos WHERE  matricula<>'333'



...medio simple, ¿no?
Te conviene ver un poco de lógica proposicional. Es de allí de donde se toma esto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 13/12/2011, 11:09
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: es posible crear una consulta asin...

Hola gnzsoloyo, quizas lo postee mal, lo que quiero es que me devuelva la matricula independiente mente del color o auto que selecione, esto es posible entando los tres campos en una tabla?

una cosa la tabla se llama tabla y los campos auto, color y matricula.
Saludos
  #6 (permalink)  
Antiguo 13/12/2011, 11:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: es posible crear una consulta asin...

La verdad, como dijo quimfv, es que mucho no se te entiende. No e entiende tu problema o no se entiende qué tienen que ver los otros campos que mencionas.
Si lo que quieres es que la consulta devuelva el registro que corresponde a un vehículo que tiene una determinada matrícula, lo único que necesitas es:

Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE matricula='333'
Si lo que no quieres es esa matrícula, pues devolverá el resto de los vehículos:
Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE matricula<>'333'

En cualquier caso, si te tiene que devolver una cosa o la otra, sin tener en cuenta color o modelo de vehículo, pues simplemente comparas con un sólo campo en el WHERE...
¿Cuál es entonces el problema?
Sencillamente, no usas los otros campos en la consulta...

Ahora bien, si lo que quieres es una consulta donde además puedas incluir otros elementos de búsqueda como color, o modelo, entonces la consulta no peude ser fija, sino que la debes crear dinámicamente en el programa antes de enviarla a MySQL.

No hay otra.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 13/12/2011, 11:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: es posible crear una consulta asin...

teneis razon gnzsoloyo quizas no se me entendio bien, las consultas que posteasteis ya las entendi, pero justo lo que quiero lograr aun no se si se puede, con la tabla que postee arriba con sus tres campos, la consulta que quiero hacer es la siguiente:

Código MySQL:
Ver original
  1. select * from tabla where matricula=333 and color='azul' or auto='coche2'

osea el resultado tendria que ser el campo con matricula 333, auto coche 3, color azul, pero me recupera todos los registros que contengan color azul o auto coche2, sin que la matricula coincida, osea que yo lo que quiero es que me recupere la matricula 333 siempre que alguno de los campos auto o color coincida con su contenido, no se si me explique bien ahora, si no lo siento, saludos.
  #8 (permalink)  
Antiguo 13/12/2011, 12:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: es posible crear una consulta asin...

¿No será esto lo que quieres?
Código MySQL:
Ver original
  1. FROM tabla
  2. WHERE matricula=333 AND (color='azul' OR auto='coche2');
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 13/12/2011, 12:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: es posible crear una consulta asin...

hola pithon:

No termino de entender qué es lo que quieres obtener... es decir, a partir de los datos de ejemplo que pones en tu tabla ¿Cuál es la salida correcta?. Es posible que tengas un problema de JERARQUÍA DE OPERADORES, pues hay que recordar que las comparaciones AND se ejecutan antes que las comparaciones OR.

Código:
En matemáticas 1+2*4 NO ES LO MISMO QUE (1+2)*4
En Lógica relacional pasa algo similar:

Código SQL:
Ver original
  1. mysql> CREATE TABLE tabla (auto VARCHAR(10), color VARCHAR(10),
  2.     -> matricula INT);
  3. Query OK, 0 ROWS affected (0.17 sec)
  4.  
  5. mysql> INSERT INTO tabla VALUES ('coche1', 'rojo', 111),
  6.     -> ('coche2', 'verde', 222), ('coche3', 'azul', 333);
  7. Query OK, 3 ROWS affected (0.05 sec)
  8. Records: 3  Duplicates: 0  Warnings: 0
  9.  
  10. mysql> SELECT * FROM tabla;
  11. +--------+-------+-----------+
  12. | auto   | color | matricula |
  13. +--------+-------+-----------+
  14. | coche1 | rojo  |       111 |
  15. | coche2 | verde |       222 |
  16. | coche3 | azul  |       333 |
  17. +--------+-------+-----------+
  18. 3 ROWS IN SET (0.00 sec)
  19.  
  20. mysql> SELECT * FROM tabla
  21.     -> WHERE matricula=333 AND color='azul' OR auto='coche2';
  22. +--------+-------+-----------+
  23. | auto   | color | matricula |
  24. +--------+-------+-----------+
  25. | coche2 | verde |       222 |
  26. | coche3 | azul  |       333 |
  27. +--------+-------+-----------+
  28. 2 ROWS IN SET (0.01 sec)
  29.  
  30. mysql> SELECT * FROM tabla
  31.     -> WHERE matricula=333 AND (color='azul' OR auto='coche2');
  32. +--------+-------+-----------+
  33. | auto   | color | matricula |
  34. +--------+-------+-----------+
  35. | coche3 | azul  |       333 |
  36. +--------+-------+-----------+
  37. 1 ROW IN SET (0.00 sec)

Esto igual no tiene nada que ver con el planteamiento de tu problema, pero sería conveniente que lo revises. En cuanto a tu problema, pues sigo sin entender por qué es necesario poner los tres campos en la búsqueda... a final de cuentas, si lo único que te interesa es la matrícula, pues es el que deberías utilizar.

Código:
EDITADO: Veo que el compañero gnzsoloyo ya publicó lo mismo jejeje... espero que la explicación te sirva para ver el problema
Saludos
Leo.
  #10 (permalink)  
Antiguo 13/12/2011, 12:26
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: es posible crear una consulta asin...

Hola gnzsoloyo, eso era exactamente lo que queria, la sintaxis para crear comparaciones entre campos, muchas gracias por tu colaboracion me pondre ha estudiar sobre base de datos, saludos.

Etiquetas: posible, tabla
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 03:31.