2014-05-07 3 views
-1

Les données ci-dessous montrent le calendrier ayant des sujets électifs/non-électifs d'un étudiant. Mon exigence est de sélectionner ces lignes quand les types elec et nonelec ont la même période donc dans ce cas sélectionnez le type elec.

Les moyens pour l'horaire d'un jour au choix (type elec) doivent être privilégiés lorsque les deux ont la même période. Et quand le type elec n'a pas de période comme la période 5 alors sélectionnez le non-électif.Groupe Mysql par Avec Condition

enter image description here

Ma Recherche

SELECT s.sch_id, s.sch_subtype, sd.sdetail_id, sd.sdetail_period 
FROM schedule s 
INNER JOIN schedule_detail sd ON s.sch_id = sd.sdetail_schedule 
WHERE '2014-04-30' 
BETWEEN sch_datefrom 
AND sch_dateto 
AND 
(
    (
    sch_section =1 
    AND sch_subtype = 'nonelec' 
) 
    OR 
    (
    sch_subtype = 'elec' 
    AND 272 
    IN 
    ( 
     SELECT edetail_stuid 
     FROM elective_detail 
     WHERE edetail_elective = sch_section 
    ) 
) 
) 
AND sch_course =3 
AND sch_batch =2 
AND sch_termid =2 
AND sdetail_day = 'wed' 
AND sdetail_period >0 
AND CASE WHEN sch_subtype = 'nonelec' 
THEN 1 =1 
WHEN sch_subtype = 'elec' 
THEN sdetail_subject >0 
AND sdetail_faculty >0 
AND sdetail_room >0 
END GROUP BY CASE WHEN sch_subtype = 'elec' 
THEN sdetail_period 
ELSE 1 
END ORDER BY sdetail_period 

Sortie de requête ci-dessus

enter image description here

Sortie Obligatoire

enter image description here

+0

.... et vous avez essayé de coder toute requête de votre côté ?? :) – NoobEditor

+0

oui j'ai utilisé ... grouper par cas quand sch_type = 'elec' puis sdetail_period d'autre 1 fin ... mais pas travaillé – Sajal

+0

s'il vous plaît poster la question aussi dans votre question! – NoobEditor

Répondre

0

Vous pouvez essayer quelque chose de ce genre:

SELECT sch_id,sch_subtype,sdetail_id,sdetail_period 
FROM table 
WHERE condition 
group by sch_subtype 

Il serait mieux si vous pouvez poster la requête qui u essayé.

+0

* Il serait mieux si vous pouvez poster la requête que vous avez essayé * - il est toujours préférable d'attendre, sauf si vous êtes impatient de rep !! ;) – NoobEditor

0

Dont ce qui est vraiment obtenir le problème ici:

SELECT * FROM schedule s 
JOIN schedule_detail sd ON s.sch_id = sd.sdetail_schedule 
LEFT JOIN elective_detail ed ON sd.sch_section = ed.edetail_elective 
WHERE 
(
    sd.sch_section =1 
    AND s.sch_subtype = 'nonelec' 
) 
OR 
(
    ed.edetail_stuid = 227 
    AND sch_subtype = 'elec' 
) 
GROUP BY sd.sdetail_period 

SQL Fiddle: http://sqlfiddle.com/#!2/69d4e/1

+0

pas cela ne fonctionnera pas .. becz ces étudiants qui ont opté pour le sujet électif. c'est pourquoi je l'ai utilisé et 272 IN (SELECT edetail_stuid DE elective_detail OÙ edetail_elective = sch_section ) .. 272 ​​ici est id étudiant – Sajal

+0

@Sajal difficile de comprendre ce que vous essayez de faire de votre requête. Peut-être ajouter un exemple à SQL fiddle. Ou ajoutez une structure de base à la description. Pourquoi cela fonctionne-t-il si vous ajoutez le reste de votre requête? Y a-t-il une erreur? –

+0

comment puis-je vous montrer la structure de la table? Est-ce que mon exigence est claire pour vous. – Sajal