2016-05-14 4 views
0

Ich habe vier Tabellen:mySQl, Abfrage: Wie kann die Auswahl aus der Datenbank angepasst werden?

courses, allocate_rooms, rooms, departments 

Abfrage:

SELECT 
    courses.`name`, 
    courses.`code`, 
    allocate_rooms.`start`, 
    allocate_rooms.`end`, 
    rooms.room_number 
FROM 
    departments 
JOIN courses ON departments.id = courses.department_id 
LEFT JOIN allocate_rooms ON allocate_rooms.course_id = courses.id 
LEFT JOIN rooms ON allocate_rooms.room_id = rooms.id 
WHERE 
    departments.id = 1 

der Query muss ich als rooms.room_number, allocate_rooms.start-allocate.rooms_end eine Auswahl Ansicht machen; und wenn keine Daten zu diesem Kurs vorhanden sind, muss ich "Noch nicht geplant" anzeigen.

Eg: R.No: 301,12:00-12:30; (if the course related data is there otherwise it will show "Not Scheduled Yet" 

Wie überschreibe ich die obige Abfrage? Wenn jemand mir hilft, die Lösung zu finden.

Antwort

0

können Sie versuchen, mit IFNULL

SELECT courses.name, courses.code, allocate_rooms.start, 
    allocate_rooms.end , 
    case rooms.room_number 
     WHEN IS NULL THEN 'No Rooms allocated' 
     WHEN 0 THEN 'No Rooms allocated' 
     ELSE room.room_number 
     end 
FROM departments 
join courses on departments.id = courses.department_id 
left join allocate_rooms on allocate_rooms.course_id=courses.id 
left join rooms on allocate_rooms.room_id=rooms.id 
WHERE departments.id=1 
+0

Wie trete ich den Blick auf 'rooms.room_number, allocate_rooms.start -allocate_rooms.end;' – Hola

+0

besser erklären, verstehe ich nicht .. bitte – scaisEdge

+0

Ich muss möglicherweise Alias ​​für den Beitritt dieser Spalten verwenden, um während der Auswahl aus der Datenbank hinzuzufügen! Wie ich in meiner Frage gesagt habe, muss ich 'allocate_rooms.start, allocate_rooms.end, rooms.room_number' beitreten und wenn es keine Werte mit diesen verbunden ist, sollte es wie' No Rooms allocated' – Hola

0

Ich bin nicht sicher, ob es ist, was Sie brauchen, aber versuchen Sie dies:

Sie DECODE verwenden können, für das bekommen, was Sie brauchen. Hier

SELECT 
    c.name name 
    ,c.code code 
    ,decode(ar.start,NULL,'Not Schedule Yet') START 
    ,decode(ar.end,NULL,'Not Schedule Yet') END 
    ,r.room_number roomnum 
FROM 
    departments d 
    ,courses c 
    ,allocate_rooms ar 
    ,rooms r 
WHEREd.id = c.id 
AND ar.course_id = c.id 
AND ar.room_id = r.room_id 
AND d.id = 1; 
0

ist die Lösung:

SELECT courses.name, courses.code,COALESCE(CONCAT('R. No',':',rooms.room_number,', ',days.name ,', ', allocate_rooms.start,' - ',allocate_rooms.end),"Not Assigned Yet") AS Schedule 
FROM departments join courses on departments.id = courses.department_id 
left join allocate_rooms on allocate_rooms.course_id=courses.id 
left join rooms on allocate_rooms.room_id=rooms.id 
left join days on allocate_rooms.day_id=days.id WHERE departments.id=1 
Verwandte Themen