Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Porównanie dwóch tabel -> Wynik różnica x1 and y2 NOT IN (x2 and y2), Pomoc w zapytaniu SQL
--osaka--
post
Post #1





Goście







Witam!
Proszę o pomoc w skonstruowaniu zapytania SQL.
W skrócie:
- importuje dane z dwóch plików do mysql do dwóch tabel
- tabele są identycznej budowy
- potrzebuję wyciągnąć różnice między tabelami ale potrzebuje sprawdzić dwa argumenty

Np.

  1. Tabela_1
  2. ID | TEXT1 | TEXT2
  3. ----------------------------
  4. 1 A A
  5. 2 A B
  6. 3 A C
  7. 4 A D
  8. 5 A A
  9. 6 A A
  10.  
  11. Tabela_2
  12. ID | TEXT1 | TEXT2
  13. ----------------------------
  14. 1 A A
  15. 2 A B
  16. 3 A C
  17. 4 A Z
  18. 5 B A
  19. 6 A B
  20.  
  21.  
  22. WYNIK Różnica TEXT2 & TEXT2
  23. ID | TEXT1 | TEXT2
  24. ----------------------------
  25. 4 A Z
  26. 5 B A


Wersja I: jeden warunek – działa !

  1. SELECT ID, TEXT1, TEXT2
  2. FROM Tabela_2
  3. WHERE
  4. TEXT1
  5. NOT IN ( SELECT TEXT1 FROM Tabela_1)


Wersja II: dwa warunki – Nie działa ! Proszę o pomoc!

  1. SELECT ID, TEXT1, TEXT2
  2. FROM Tabela_2
  3. WHERE
  4. TEXT1 AND TEXT2
  5. NOT IN ( SELECT TEXT1, TEXT2 FROM Tabela_1)



Go to the top of the page
+Quote Post
pmir13
post
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


1. Podzapytanie w nawiasie - znajdź wspólną część - zwykły join po zgadzających się obu tekstach, DISTINCT by wyeliminować niepotrzebne duplikaty.
2. Połącz do tabeli, od której chcesz odjąć przy pomocy LEFT JOIN - dla rekordów, których nie ma we wspólnych będzie NULL.

  1. SELECT tabela_2.* FROM tabela_2
  2. LEFT JOIN
  3. ( SELECT DISTINCT tabela_1.text1, tabela_1.text2 FROM tabela_1
  4. JOIN tabela_2
  5. ON tabela_1.text1 = tabela_2.text1 AND tabela_1.text2 = tabela_2.text2 ) wspolne
  6. ON tabela_2.text1 = wspolne.text1 AND tabela_2.text2 = wspolne.text2
  7. WHERE wspolne.text1 IS NULL
Go to the top of the page
+Quote Post

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: 4.04.2026 - 06:38