Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]Wybieranie rekordów przypisanych do innej tabeli
Forum PHP.pl > Forum > Przedszkole
sannin
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?
darko
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
sannin
Twoje zapytanie zwraca coś zupełnie innego. Wyświetla wszystkie szkoły wraz z wszystkimi nauczycielami, a ja chcę tylko szkoły.
potreb
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.
sannin
Wiem o tym smile.gif Mój sposób też działa, ale szukam bardziej wydajnego. Pokombinuje z tym NOT NULL, dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.