Ich habe drei Tabellen wie diese:
Spezialisierung
sid | s_name
--------------
1 | test 1
2 | test 2
Person
pid | name | sid
------------------
1 | ABC | 1
2 | XYZ | 2
Zeitliche Koordinierung
tid | time_from | time_to | pid
----------------------------------
1 | 08:00:00 | 10:00:00 | 1
2 | 20:00:00 | 22:00:00 | 1
3 | 09:00:00 | 14:00:00 | 2
4 | 19:00:00 | 20:00:00 | 2
** Ich möchte so etwas wie das Ergebnis *
pid | name | s_name | time_from | time_to
--------------------------------------------
1 | ABC | test 1 | 08:00:00 | 10:00:00
Beschreibung:
Alle drei Tabellen sind miteinander verbunden.
Ich möchte alle Aufzeichnungen wo
Spezialisierung id = '1'
Person Name wie 'ABC'
timing liegt zwischen '08: 00: 00 'und '10: 00: 00'.
Ich habe mehrere Kombinationen von Mysql-Joins ausprobiert, konnte die Daten jedoch nicht korrekt abrufen.
Sie können INNER JOIN
dafür verwenden,
SELECT a.pid, a.name,
b.sname,
c.time_from,
c.time_to
FROM person a
INNER JOIN specialisation b
ON a.sid = b.sid
INNER JOIN Timing c
ON a.pid = c.pid
WHERE a.sid = 1 and
a.name='ABC' AND
c.time_from >= '08:00:00' AND c.time_to <= '10:00:00'
Sie können Simple Join so verwenden
Select P.pid , name , s_name ,time_from ,
time_to from Specialisation S
Join Person P on P.sid=S.sid
Join Timing T on T.pid= P.pid
where T.time_from >= '08:00:00' AND T.time_to <='10:00:00' And P.name='ABC';
Dies ist eine einfache JOIN
mit der entsprechenden WHERE
-Bedingung.
SELECT t.pid, p.name, s.s_name, t.time_from, t.time_to
FROM Timing AS t
JOIN Person AS p ON p.pid = t.pid
JOIN Specialisation AS s ON s.sid = p.sid
WHERE s.sid = 1
AND t.time_from >= 08:00:00 AND t.time_to <= 10:00:00
Dies ist eine einfache Bedingung, bei der Sie JOIN
s verwenden müssen, um Daten auf diese Weise abzurufen. Es ist so einfach, dass Sie gleich nach dem ersten Gebrauch einen Eindruck davon bekommen. Vielleicht ist diese Frage und Antworten werden Ihnen helfen, sie zu verstehen.
SELECT p.pid, p.name, s.s_name, t.time_from, t.time_to
FROM Timing AS t
JOIN Person AS p ON p.pid = t.pid
JOIN specialisation AS s ON s.sid = p.sid
WHERE s.sid = 1 and p.name='ABC'
AND t.time_from >= '08:00:00' AND t.time_to <= '10:00:00'
SELECT B.PID pid, B.NAME name, A.SNAME s_name, C.TIME_FROM time_from, C.TIME_TO time_to
FROM SPECIALISATION A, PERSON B, TIMING C
WHERE A.SID = 1 AND A.SID=B.SID AND B.PID=C.PID
AND C.TIME_FROM >=08:00:00 AND C.TIME_TO <=10.00.00
Versuchen :
SELECT t.pid, p.name, s.s_name, t.time_from, t.time_to
FROM Specialisation AS s
left join Person AS p ON p.sid = s.sid
left join Timing AS t ON t.pid = p.pid
WHERE s.sid = 1
AND t.time_from >= 08:00:00' AND t.time_to <= 10:00:00
group by t.tid