<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - poprawienie danych na podstawie dwóch tabel]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=1445&amp;type=atom"/>
	<updated>2013-01-25T12:33:15Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=1445</id>
		<entry>
			<title type="html"><![CDATA[Odp: poprawienie danych na podstawie dwóch tabel]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3861#p3861"/>
			<content type="html"><![CDATA[Nie ma wielkiego wyboru, trzeba wyrównać obie tabele (chodzi mi o pole ulica). Na pewno możesz zmniejszyć ilość niepasujących danych usuwając w tabeli klient w polu ulica zbędne znaki typu dwie spacje lub spacja na początku lub końcu wyrazu. Proponuje też znaleźć w tabeli kodypocztowe te miejscowości, które mają tylko jeden kod pocztowy co dla małych miejscowości zdarza się dość często i wtedy zrobić porównanie po miejscowościach. 

Co do odwróconych nazwy typu ul. "Jan Kowalski" i "Kowalski Jan" to możesz wykorzystać tablice patrz poniższy przykład
select * 
from (select string_to_array('Mickiewicza Adama', ' ') as ul union all
      select string_to_array('Adama Mickiewicza', ' ')) as klienci
    ,(select string_to_array('Adama Mickiewicza', ' ') as ul,'00-000' as kod union all
      select string_to_array('Adama Jana Mickiewicza', ' '),'00-001' union all
      select string_to_array('Mickiewicza', ' '),'00-002') as kodypocztowe
where klienci.ul <@ kodypocztowe.ul 
  and array_length(klienci.ul,1) = array_length(kodypocztowe.ul,1)]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2013-01-25T12:33:15Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3861#p3861</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[poprawienie danych na podstawie dwóch tabel]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3860#p3860"/>
			<content type="html"><![CDATA[Cześć,

Takie pytanie.
 mam dwie tabele klient i kodypocztowe.
W tabeli klient mam kolumny imie, nazwisko, miasto,ulica,kod
w tabeli kodypocztowe mam tabele kod,ulica, ,miasto.

Niestety tabela klient ma puste kody pocztowe, ale pełne ma tabela kodypocztowe.
Skopiowałem poprzez przyrównanie 70% kodów z tabeli kodpocztowe do tabeli klient porpzez update gdzie klient.miejscowosc=kodypocztowe.miejscowosc and klient.ulica=kodypocztowe.ulica

Zostało mi 30%( to jest 40 tyś rekordów), ale napisany przezemnie update ma problem z dopasowaniem ulic.
Nie wrzuca mi całosci bo w tabeli klient ulice mam np Adama Mickiewicza, a w tabeli kodypocztowe mam MICKIEWICZA A.

I teraz moje pytanie czy da się to jakoś dopasować tzn porównać?
Żeby mógł to zrobić automatem?]]></content>
			<author>
				<name><![CDATA[mkarach]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1197</uri>
			</author>
			<updated>2013-01-25T09:21:02Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3860#p3860</id>
		</entry>
</feed>
