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

Select sql

Estas en el tema de Select sql en el foro de Mysql en Foros del Web. BUENAS COMPAÑEROS ------ Estoy intentando facilitarme las cosas en una consulta, yo recuerdo que habia hecho cosas parecidas incluso iguales pero no doy con la ...
  #1 (permalink)  
Antiguo 11/05/2011, 00:38
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Select sql

BUENAS COMPAÑEROS
------
Estoy intentando facilitarme las cosas en una consulta, yo recuerdo que habia
hecho cosas parecidas incluso iguales pero no doy con la SELECT adecuada.

Tengo un modelo E_R como el de la imagen:



Explicacion:
Para un concurso hay 3 preguntas y id idioma que podra ser 1,2,3.
Entonces para cada pregunta hay 3 respuestas.

Me gustaria poder mostrar un select que devolviese:

Para concurso 1,2..5..7...10....

P1
r1
r2
r3
P2
r1
r2
r3
p3
r1
r2
r3

Es posible ?

Lo que yo tenia es esto: (También tenia una groub by pero me dava fallo).

select p.idPreguntas, p.descPregunta, r.descRespuesta, respuestaCorrecta
from Preguntas p,Respuestas r
where r.pregunta = p.idPreguntas

and p.idPreguntas in (1,2,3)
and r.concurso = 1
and p.concursos = 1
and r.idioma = 2;

Un saludo, gracias por vuestro esfuerzo
  #2 (permalink)  
Antiguo 11/05/2011, 01:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select sql

Código MySQL:
Ver original
  1. select p.idPreguntas,
  2. p.descPregunta,
  3. r.descRespuesta,
  4. respuestaCorrecta
  5. from Preguntas p inner join Respuestas r
  6. on p.idPreguntas= r.pregunta
  7. and p.concurso = r.concurso
  8. and p.idioma = r.idioma
  9. where p.concurso = 1
  10. and p.idioma=2;

Creo
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 11/05/2011, 01:12
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Select sql

Hola, responde lo mismo que mi consulta, citada mas arriba es decir:

p1 --> r1
p1 --> r2
p1 --> r3

p2 --> r1
p2 --> r2
p2 --> r3

p3 --> r1
p3 --> r2
p3 --> r3

Es correcto ? es la manera mas limpia verdad? es que no estoy seguro

salu2
  #4 (permalink)  
Antiguo 11/05/2011, 04:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select sql

Por la info que pasas creo que esta es la forma correcta de hacerlo, fijate que la relacion entre preguntas y respuesta se debe dar por esto tres campos

on
p.idPreguntas= r.pregunta
AND p.concurso = r.concurso
AND p.idioma = r.idioma

es la única diferencia que veo con tu consulta.

Tu estas haciendo la relacion solo por r.pregunta = p.idPreguntas cunado estos segun el E_R que muestras no son únicos ENUM(1,2,3)... como luego limitas al concurso 1 el resultado es el mismo

Con mi sentencia podrias listar todos los concursos y el resultado seria coherente

Código MySQL:
Ver original
  1. SELECT p.concurso,
  2. p.idPreguntas,
  3. p.descPregunta,
  4. r.descRespuesta,
  5. r.respuestaCorrecta
  6. FROM Preguntas p INNER JOIN Respuestas r
  7. ON p.idPreguntas= r.pregunta
  8. AND p.concurso = r.concurso
  9. AND p.idioma = r.idioma
  10. WHERE p.idioma=2;

Con tu sentencia si sacas el where concurso=1 el resultado te combinara preguntas y respuestas de distintos concursos...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: select, sql
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 01:50.