![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Otóż mam 2 tabeli o identycznej strukturze, ale zawierające różne dane:
Pierwsza tabela zawiera 2862 rekordy, a druga 2892 rekordy. Robię zapytanie:
Chcę pobrać tylko te rekordy z obu tabel, nazwy których w polu name są identyczne. Według mojej wiedzy, powinno mi pobrać około 2500 rekordów, a pobiera aż 4431, gdzie robię źle? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A zwróciłeś uwagę, czy aby nie dostajesz złączeń z nullami. Joiny mają tę ciekawą właściwość, że jeśli nie mają co znaleźć w warunku złączenia drugiej tabeli to i tak się wyświetlą, tyle że dopiszą sobie do brakujących kolumn NULL. Posortuj więc po kolumnach z dołączanej tablicy, a zapewne wysypią się tam nulle. W warunku WHERE więc wywal te które NULL w odpowiedniej kolumnie posiadają a liczba rekordów na pewno zmaleje. Nie wiem jednak czy aż do takich wartości jakie byś chciał. Moim zdaniem bowiem muszą się gdzieś nazwy dublować i dlatego w joinie masz sytuacje, że do rekordu z pierwszej tabeli można przypiąć kilka z drugiej, co mnoży liczbę rezultatów po złączeniu. Zrób sobie najlepiej:
i sprawdź czy są zdublowane rekordy (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 06:39 |