Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL]Wybieranie rekordów przypisanych do innej tabeli
sannin
post 31.03.2010, 13:14:27
Post #1





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

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


Witam,

mam dwie tabele

szkoly
id,
nazwa,
adres

oraz

nauczyciele

id,
szkola,
imie,
nazwisko

Teraz potrzebuję wybrać szkoły, ale wyłącznie te które mają przypisanego do siebie co najmniej jednego nauczyciela. Zrobiłem to tak:

  1. SELECT * FROM `szkoly` WHERE id IN (SELECT DISTINCT szkola FROM `nauczyciele`);


Czy jest to optymalne rozwiązanie? Może ktoś ma lepszy pomysł na rozwiązanie tego problemu?
Go to the top of the page
+Quote Post
darko
post 31.03.2010, 15:24:51
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Mało wydajnie, ale jeśli kolumna szkola w tabeli nauczyciele jest kluczem obcym (do id tabeli szkola) to:

  1. SELECT DISTINCT * FROM szkoly sz, nauczyciele na WHERE na.szkola = sz.id


Ten post edytował darko 31.03.2010, 15:25:13


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
sannin
post 31.03.2010, 15:44:44
Post #3





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

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


Twoje zapytanie zwraca coś zupełnie innego. Wyświetla wszystkie szkoły wraz z wszystkimi nauczycielami, a ja chcę tylko szkoły.
Go to the top of the page
+Quote Post
potreb
post 31.03.2010, 18:04:02
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


SELECT DISTINCT, CZYLI CHCESZ ZWRACAĆ CO NAJMNIEJ SZKOŁE Z JEDNYM NAUCZYCIELEM
  1. IS NOT NULL


Poszukaj coś podobnego, warunek w zapytaniu. Distinct zwraca rekordy które się nie powtarzają a nie te które nie ma nic do nich przypisanych.

Ten post edytował potreb 31.03.2010, 18:04:57


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

Go to the top of the page
+Quote Post
sannin
post 31.03.2010, 20:13:47
Post #5





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

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


Wiem o tym smile.gif Mój sposób też działa, ale szukam bardziej wydajnego. Pokombinuje z tym NOT NULL, dzięki.
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 Wersja Lo-Fi Aktualny czas: 18.06.2025 - 15:32