Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP]Deduplikacja z pewnym udziwnieniem
Lopmer
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.09.2009

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


Hej,

Mam następującą sytuację:


Mamy przykładowo 2 tabele: 'tabela1' i 'tabela2' zawierające dokładnie takie same kolumny. Nazwijmy je dla przykładu: email, rodzaj, odp_ankieta

email - tu nic nie trzeba mówić, wiadomo.
rodzaj - w tabela1 mamy podział na 2 typy, np.: policjant, strażak. W tabela2 mamy tylko wartość żołnierz
odp_ankieta - przyjmuje 2 wartości: tak/nie.

W czym jest problem ? Chciałbym zdeduplikować te dane przy jednoczesnej aktualizacji na następującej zasadzie:

Jeżeli spotkamy się z taką sytuacją, że w jednej tabeli będzie:

  1. email, rodzaj, odp_ankieta
  2. zolnierz@wp.pl, zolnierz, nie


a w drugiej z tym samym mailem:

  1. email, rodzaj, odp_ankieta
  2. zolnierz@wp.pl, policjant (lub strazak), tak


to aktualizujemy dane w tabela2 na nastepujace:

  1. email, rodzaj, odp_ankieta
  2. zolnierz@wp.pl, zolnierz, tak


A rekord z tabela1 usuwamy.


Czyli w przełożeniu tylko na słowa: w momencie kiedy w tabela1 napotkamy na rekord, w ktorym email pokrywa sie z jakimś w tabela2 (czyli w pewnym sensie zolnierz okazuje sie strazakiem/policjantem) to usuwamy rekord z tabela1 i aktualizujemy dane w tabela2 POD WARUNKIEM, ŻE POLE 'ODP_ANKIETA' w tabela1 przy tym rekordzie zawierała odpowiedź 'TAK'. W przeciwnym wypadku tylko usuwamy rekord z tabela1 nic więcej nie robiąc.

Mam nadzieję, że nie pogmatwałem za bardzo. Będę wdzięczny za jakąkolwiek wskazówkę. Nie wiem szczerze mówiąc czy da się tutaj skorzystać tylko i wyłącznie z SQL'a ;/

Pozdrawiam.

Ten post edytował Lopmer 14.03.2010, 11:39:40
Go to the top of the page
+Quote Post
marlic
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 2
Dołączył: 14.03.2010

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


Nie wiem w jakim silniku bazodanowym to robisz ale jeżeli obsługiwane są podzapytania to można to zrobić np. takimi dwoma SQL-ami:
  1. UPDATE tabela2
  2. SET odp_ankieta = 'tak'
  3. WHERE email = (
  4. SELECT tabela1.email
  5. FROM tabela1, tabela2
  6. WHERE tabela1.email = tabela2.email
  7. AND (tabela1.odp_ankieta = 'tak' OR tabela2.odp_ankieta = 'tak')
  8. );
  9.  
  10. DELETE FROM tabela1
  11. WHERE email = (
  12. SELECT tabela1.email
  13. FROM tabela1, tabela2
  14. WHERE tabela1.email = tabela2.email
  15. AND (tabela1.odp_ankieta = 'tak' OR tabela2.odp_ankieta = 'tak')
  16. );
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: 23.08.2025 - 06:02