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

seleccionar de una tabla o de otra dependiendo de un valor

Estas en el tema de seleccionar de una tabla o de otra dependiendo de un valor en el foro de Mysql en Foros del Web. Buenas, estoy tratando de resolver lo sgte: necesito seleccionar un valor dependiendo del valor de un campo de la misma consulta, una cosa asi: @import ...
  #1 (permalink)  
Antiguo 25/02/2010, 14:21
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 10 años, 1 mes
Puntos: 4
Pregunta seleccionar de una tabla o de otra dependiendo de un valor

Buenas, estoy tratando de resolver lo sgte:

necesito seleccionar un valor dependiendo del valor de un campo de la misma consulta, una cosa asi:

Código MySQL:
Ver original
  1. te.codigo,
  2. te.posicion,
  3. te.estado
  4. IF (te.estado='Nuevo',sb.medida,inv.medida) as medida
  5. temporal_entrantes AS te
  6. Inner Join stock_bodegas AS sb ON sb.id_interno = te.codigo
  7. Inner Join inventario_neumaticos AS inv ON inv.id_interno = te.codigo

pero no me resulta, me da error de syntaxis. obviamente la tengo mal pero no sé como corregirla.

cualquier luz será agradecida
  #2 (permalink)  
Antiguo 25/02/2010, 14:45
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 9 años, 8 meses
Puntos: 8
Respuesta: seleccionar de una tabla o de otra dependiendo de un valor

hola, creo que el error esta en que te falta una coma justo antes del IF, prueba y comentas.
  #3 (permalink)  
Antiguo 25/02/2010, 15:01
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: seleccionar de una tabla o de otra dependiendo de un valor

efectivamente me faltaba una coma, gracias por la acotacion muy acertada.
al final me queda asi:

Código MySQL:
Ver original
  1. te.codigo,
  2. te.posicion,
  3. te.estado,
  4. IF(te.estado='Nuevo',sb.medida,inv.medida) AS medida
  5. temporal_entrantes AS te
  6. Left Join stock_bodegas AS sb ON sb.id_interno = te.id_inventario
  7. Left Join inventario_neumaticos AS inv ON inv.id_interno = te.id_inventario

gracias.

esta consulta me arroja un indice en la columna medida, mas no he podido hacer que ese indice lo lea de otra tabla, donde está el nombre del indice correspondiente, traté agregandole un :

Código MySQL:
Ver original
  1. Inner Join tipos_neumaticos AS tn ON tn.id_interno = te.medida

pero me dice que no conoce la columna te.medida
  #4 (permalink)  
Antiguo 25/02/2010, 15:12
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 9 años, 8 meses
Puntos: 8
Respuesta: seleccionar de una tabla o de otra dependiendo de un valor

Bueno si entendi lo que escribiste, no se puede usar el alias en esas clausulas, segun creo.
habria que encontrar otra solucion para traer ese indice a la consulta.
  #5 (permalink)  
Antiguo 25/02/2010, 15:21
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 9 años, 8 meses
Puntos: 8
Respuesta: seleccionar de una tabla o de otra dependiendo de un valor

podrias probar esto:
Código MySQL:
Ver original
  1. codigo
  2. posicion
  3. estado
  4. medida
  5. te.codigo codigo,
  6. te.posicion posicion,
  7. te.estado estado,
  8. IF(te.estado='Nuevo',sb.medida,inv.medida) AS medida
  9. temporal_entrantes AS te
  10. Left Join stock_bodegas AS sb ON sb.id_interno = te.id_inventario
  11. Left Join inventario_neumaticos AS inv ON inv.id_interno = te.id_inventario)t1
  12. inner join tipos_neumaticos AS tn ON tn.id_interno = t1.medida

prueba y nos cuentas
  #6 (permalink)  
Antiguo 25/02/2010, 15:33
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 10 años, 1 mes
Puntos: 4
Respuesta: seleccionar de una tabla o de otra dependiendo de un valor

Perfecto!!!, muchas gracias, lo voy a estudiar para aprender a resolver problemas como estos cuando se me preseten, muy agradecido, llevo horas en la pega y ya tenia la cabeza un poco mareada.

mi consulta quedo asi al final y da el resultado esperado

Código MySQL:
Ver original
  1. codigo,
  2. posicion,
  3. estado,
  4. CONCAT(tn.medida,' ', tn.marca) as medida
  5. te.codigo codigo,
  6. te.posicion posicion,
  7. te.estado estado,
  8. IF(te.estado='Nuevo',sb.medida,inv.medida) AS medida
  9. FROM temporal_entrantes AS te
  10. LEFT JOIN stock_bodegas AS sb ON sb.id_interno = te.id_inventario
  11. LEFT JOIN inventario_neumaticos AS inv ON inv.id_interno = te.id_inventario)t1
  12. INNER JOIN tipos_neumaticos AS tn ON tn.id_interno = t1.medida


pd: menos mal que me queda solo media hora más de pega y a la casita, jajja

Etiquetas: dependiendo, seleccionar, tablas
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 23:02.