Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> konstrukcja zapytanie select, jak stworzyć takie zapytanie (select)
Jozjasz
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 11.09.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował Jozjasz 22.07.2012, 11:36:45
Go to the top of the page
+Quote Post
toaspzoo
post
Post #2





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


  1. SELECT testy.patient_id FROM testy, patient.first_name FROM patient WHERE MAX( IN(SELECT count(*) FROM testy WHERE patient.id = testy.patient_id);


Ten post edytował toaspzoo 22.07.2012, 12:31:56


--------------------

LS Easter egg <
Go to the top of the page
+Quote Post
Jozjasz
post
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 11.09.2009

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
bpskiba
post
Post #4





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


  1. SELECT p.first_name,p.last_name, COUNT(t.id)
  2. FROM patient p
  3. JOIN testy t ON p.id=t.patient_id
  4. GROUP BY p.id
  5. ORDER BY 3 DESC


  1. SELECT first_name, last_name,IF(last_name='harrison',2,1)
  2. FROM patient
  3. ORDER BY 3,1


Ten post edytował bpskiba 22.07.2012, 13:18:12
Go to the top of the page
+Quote Post
Jozjasz
post
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 11.09.2009

Ostrzeżenie: (0%)
-----


OK, dzięki, a co do drugiego, to Harrison to imię, więc zapytanko nr dwa powinno wygladać:

  1. SELECT first_name, last_name,IF(last_name='ford',2,1) FROM patient ORDER BY 3 DESC, 1;




Ten post edytował Jozjasz 22.07.2012, 14:39:58
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. SELECT first_name, last_name FROM patient ORDER BY last_name='ford' DESC, 1;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 13:54