![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 1.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
Mam problem z pewnym prostym zapytaniem. Mam dwie tabele z tym że druga powstała później więc ma mniejszy zakres danych. Potrzebuję teraz zrobić selecta aby wyświetlić zawartość tabeli pierwszej w taki sposób aby po połączeniu z tabelą 2 pominął określone rekordy czyli wyświetla całą tabelę 1 natomiast wiersze które dają się połączyć z tabelą 2 warunkowo pominął. I mam takie zapytanie:
Pominąłem tu wypisywanie wszystkich danych (DATA_1, DATA_2 ...). W wyniku tego zapytania oczekiwałem że rekordy gdzie STATUS ma wartość 'Zakończono' zostaną pominięte. Natomiast tak się nie dzieje. Wyświetla wszystko wraz z rekordami gdzie status ma wartość Zakończono. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, że tu masz dwa problemy. Pierwszy z tymi tabelami. Możesz go załatwić przez LEFT JOIN z użyciem NULL. Czyli:
SELECT n.* FROM nowa n LEFT JOIN stara s ON s.id=n.id WHERE s.id IS NULL W tym drugim musisz doczytać jak się zachowuje warunek we WHERE, a jak w (LEFT) JOIN. Pza tym, jak dajesz we WHERE warunek na tabelę z LEFT JOIN (oprócz sprawdzenia IS NULL), to tego LEFT możesz sobie darować... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 1.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli użyję klauzuli WHERE czyli zrobię:
To oczywiście nie pokazuje mi wierszy gdzie status jest równy Zakończono ale też nie pokazuje mi wierszy z pierwszej tabeli dla których w drugiej kompletnie nie ma nic a tak nie może być. Pokazuje mi wtedy wyłącznie część wspólną obu tabel co jest błędem. Siedzę, kombinuję, nie mogę tego rozgryźć. Bo tabela 1 ma kilkaset wierszy, tabela druga tylko kilkadziesiąt ponieważ była niedawno dołożona. Muszę wyświetlić wszystkie rekordy których nie mogę z JOIN-ować z tabelą 2 + rekordy które się JOIN-ują ale pod warunkiem że status z tabeli 2 jest różny od Zakończono. Ten post edytował lukpio3 14.01.2017, 19:42:33 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 1.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Co prawda rozwiązałem już problem poprzez kilka selectów ale to mało eleganckie rozwiązanie. Dodałem do tego co miałem Twój warunek i działa. Dzięki wielkie za pomoc. O to właśnie chodziło. Próbowałem robić tak jak napisałeś z NULL-em ale dawałem złe złączenie bo robiłem AND zamiast OR co było moim błędem. Jeszcze raz dziękuję
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.05.2025 - 06:51 |