Jozjasz
22.07.2012, 11:19:27
Witam,
Załóżmy, ze mam bazę danych składająca się z dwóch tabel:
patient: id(klucz główny), first_name, last_name, birth_date
testy: id(klucz główny), patient_id(klucz obcy z tabeli 'patient'), opis, data
Nie mogę sobie poradzić z zapytaniem, które miałoby pokazać tych pacjentów, którzy mają najwięcej badń(testów). Jak stworzyć takie zapytanie?
PS
Tak przy okazji, jeśli można, jak zrobić, żeby wyświetlić wszystkich pacjentów i posegregować alfabetycznie, np wg. 'last_name', lecz wymusić aby pacjent Harrison Ford był jako pierwszy(taki wyjątek)?
Z góry dzięki za pomoc
toaspzoo
22.07.2012, 12:28:58
SELECT testy.patient_id FROM testy, patient.first_name FROM patient WHERE MAX( IN(SELECT count(*) FROM testy WHERE patient.id = testy.patient_id);
Jozjasz
22.07.2012, 13:03:16
Nie działa.
Wyrzuca błąd:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the rght syntax to use near 'FROM patient WHERE MAX( IN(SELECT count(*) FROM testy WHERE patient.id = testy.' at line 1
mysql>
bpskiba
22.07.2012, 13:04:16
SELECT p.first_name,p.last_name, COUNT(t.id)
FROM patient p
JOIN testy t ON p.id=t.patient_id
GROUP BY p.id
ORDER BY 3 DESC
SELECT first_name, last_name,IF(last_name='harrison',2,1)
FROM patient
ORDER BY 3,1
Jozjasz
22.07.2012, 13:55:47
OK, dzięki, a co do drugiego, to Harrison to imię, więc zapytanko nr dwa powinno wygladać:
SELECT first_name, last_name,IF(last_name='ford',2,1) FROM patient ORDER BY 3 DESC, 1;
mmmmmmm
22.07.2012, 15:13:32
SELECT first_name, last_name FROM patient ORDER BY last_name='ford' DESC, 1;