Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/02/2013, 13:17
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta mysql controlando un campo y generando otro

Hola dfgphp:

No nos dices cuál es la estructura de cada una de tus tablas, ni nos dices qué información contienen cada una de ellas... sin esta información resulta casi imposible darte una respuesta puntual... ojo con eso. Puedes checar este script, igual y te puede servir para lo que quieres.

Para el ejemplo, voy a suponer que toda la información está en una sola tabla, es decir, algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->   pregunta, respuesta_1, respuesta_2, respuesta_3, respuesta_correcta
  3.     -> FROM tabla;
  4. +------------------+-------------+-------------+-------------+--------------------+
  5. | pregunta         | respuesta_1 | respuesta_2 | respuesta_3 | respuesta_correcta |
  6. +------------------+-------------+-------------+-------------+--------------------+
  7. |Descubrio America | Napoleon    | Colon       | Cortes      | 2 |
  8. |Conquista Europa  | Napoleon    | Colon       | Cortes      | 1 |
  9. |Conquista America | Napoleon    | Colon       | Cortes      | 3 |
  10. +-------------------+-------------+-------------+-------------+--------------------+
  11. 3 rows in set (0.00 sec)

Observa que en la última columna está el valor de la columna que contiene la respuesta correcta... podrías utilizar un CASE-WHEN para hacer lo que quieres, así:

Código MySQL:
Ver original
  1. mysql> SELECT pregunta, respuesta_1, respuesta_2, respuesta_3,
  2.     -> CASE respuesta_correcta
  3.     ->   WHEN 1 THEN respuesta_1
  4.     ->   WHEN 2 THEN respuesta_2
  5.     ->   WHEN 3 THEN respuesta_3
  6.     -> END texto_correcto
  7.     -> FROM tabla;
  8. +-------------------+-------------+-------------+-------------+----------------+
  9. | pregunta          | respuesta_1 | respuesta_2 | respuesta_3 | texto_correcto |
  10. +-------------------+-------------+-------------+-------------+----------------+
  11. | Descubrio America | Napoleon    | Colon       | Cortes      | Colon          |
  12. | Conquista Europa  | Napoleon    | Colon       | Cortes      | Napoleon       |
  13. | Conquista America | Napoleon    | Colon       | Cortes      | Cortes         |
  14. +-------------------+-------------+-------------+-------------+----------------+
  15.  
  16. 3 rows in set (0.01 sec)

Igual y esta no es la mejor respuesta, pero sin una idea de tu modelo de datos es lo mejor que puedo hacer.

Y finalmente una recomendación: No utilices el FROM-WHERE para hacer las uniones entre tus tablas, utiliza siempre JOIN's...

Código MySQL:
Ver original
  1. En lugar de hacer esto:
  2.  
  3. FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo
  4.  
  5. Has esto:
  6.  
  7. FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo

Saludos
Leo.