Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mySQL] Wybór rekordów z tabeli A ale tylko tych które nie istnieją w tabeli B
yalus
post
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


Witam,

Mam oto takie zagadnienie:
w bazie mam dwie tabele A i B w kazdej z nich jest pole 'numer'. W tabeli A jest rekordów 500 a w tabeli B rekordów jest 700.
w A rekordy sa numerowane od 1do500 a w B od 1do700 i teraz chcialbym wybrac z tabeli B tylko te 200 które nie istnieja w tabeli A.

aby wybrać te same rekordy musiał bym napisać
  1. SELECT * FROM A,B WHERE A.numer=B.numer


a jak napisać zapytanie aby wybrać z B tylko te które nie znajdują sie w tabeli A?


pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
alegorn
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


Mchl::zastanowlio mnie czy rzeczywiscie twoj sposob jest wydajniejszy... na logike, jesli brac pod uwage ilosc operacji jakie trzeba wykonac, na to by nie wskazywal, to chyba by byla kwestia lepszej lu gorszej implementacji danego polecenia w core bazy danych.

jednak nadal polemizowalbym ze to jest wydajniejszy sposob.... wg mnie koszt jest porownywalny, ja sprawdzalem na tabelach po ok 20000 rekordow - czasy wykonania byly niemal identyczne....

czytelnosc - kwestia gustu.. dla mnie wydaje sie wygodniejsze podzapytanie w tym przypadku


  1. EXPLAIN SELECT id FROM a WHERE id NOT IN (SELECT id FROM b);
  2. EXPLAIN SELECT a.* FROM a LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL;


Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 04:34