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

Duda de sintaxis de mysql

Estas en el tema de Duda de sintaxis de mysql en el foro de Bases de Datos General en Foros del Web. Esto se puede hacer,??? Lo he estado mirando en foros y creo que si pero me da error. SELECT color FROM piezas WHERE modelo LIKE ...
  #1 (permalink)  
Antiguo 12/06/2012, 08:15
 
Fecha de Ingreso: junio-2012
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Duda de sintaxis de mysql

Esto se puede hacer,??? Lo he estado mirando en foros y creo que si pero me da error.

SELECT color FROM piezas WHERE modelo LIKE '(SELECT nombre FROM productos WHERE tipo LIKE '$combo1')' GROUP BY color ASC

la finalidad es seleccionar los colores de la tabla piezas pero que correspondan con la característica de los seleccionados de la tabla productos.

Muchas gracias
  #2 (permalink)  
Antiguo 12/06/2012, 09:53
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: Duda de sintaxis de mysql

Mas o menos así:
Código MySQL:
Ver original
  1. SELECT color
  2. FROM piezas
  3. WHERE modelo LIKE CONCAT('%',(SELECT nombre FROM productos WHERE tipo LIKE '$combo1'), '%')
  4. GROUP BY color ASC;

Aunque en el contexto de cómo po pones tu, ería en realidad esto:
Código MySQL:
Ver original
  1. SELECT color FROM piezas P INNER JOIN productos R ON P.modelo PR.nombre
  2. WHERE PR.tipo = '$combo1'
Porque un LIKE sin el uso de comodines (%) en la cadena, es lo mismo que poner "=".

No estabas comparando la cadena obtenida en un select contra el el valor de "modelo", sino al valor de "modelo" contra una cadena de texto que contenía una sentencia de MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/06/2012, 10:33
 
Fecha de Ingreso: junio-2012
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Duda de sintaxis de mysql

Muchas gracias gnzsoloyo, por la respuesta pero no me rula, igual no me explicado bien, voy a desarrollarlo de forma grafica para que se entienda mejor:

Tengo dos tablas

1. productos
| id | nombre | tipo |
| 1 | Mod.1 | R |
| 2 | Mod.2 | P |
| 3 | Mod.3 | R |

2.piezas
| id | modelo | color |
| 1 | Mod.1 | Azul |
| 2 | Mod.2 | Rojo |
| 3 | Mod.3 | Verde |


Me gustaría saber de colores son los los del tipo $combo1=R , en este caso Azul y Verde.

Espero que te haya ayudado a ayudarme
Gracias

Última edición por megasmaller; 12/06/2012 a las 10:38
  #4 (permalink)  
Antiguo 12/06/2012, 10:47
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: Duda de sintaxis de mysql

Código MySQL:
Ver original
  1. SELECT P.color
  2. FROM piezas P INNER JOIN productos R ON P.modelo = PR.nombre
  3. WHERE PR.tipo = 'R'
LIKE es una clausula para determinar coincidencias por aproximación, pero a nivel lógico sólo tiene sentido usarlo si lo vas a hacer con ayuda de los comodines (%) dentro de la cadena. Estos comdines hacen que MySQL duevuelva todas las coincidencias donde está la cadena, con cualquier tipo de caracteres adicionales donde está el comodín.
Por ejemplo:
Código MySQL:
Ver original
  1. SELECT P.color
  2. FROM piezas P INNER JOIN productos R ON P.modelo = PR.nombre
  3. WHERE PR.tipo LIKE '%R%'
Pero en un contexto de búsqueda sin comodines, el LIKE es semánticamente idéntico al sigo de igualdad (=), por lo que carece de utilidad. es más simple usar la igualdad.
Además, ten en cuenta que lo que estás buscando es un único caracter, porque eso es lo que tienes definido almacenar allí. ¿Qué sentido tiene hacer búsquedas por aproximación, cuando tienes una cantidad de valores limitado, que se pueden determinar con un ComboBox?
Ninguna.
El LIKE sólo tiene sentido usarlo contra valores ingresados manualmente que se buscan en campos VARCHAR o TEXT que contienen cadenas largas. Para validar caracteres o códigos alfanuméricos breves, no tiene ningún sentido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql, sintaxis, 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 16:32.