Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zapytanie SQL, ułożenie zapytania
morrison
post 22.05.2005, 16:10:34
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 24.05.2004
Skąd: krakow

Ostrzeżenie: (10%)
X----


witam,
mam istotny problem z ktorym jeszcze sie nie uwiklalem wiec moze ktos mi pomoze:) Chodzi o to: mam baze danych ok. 150 tys rekordow z numerami domow, ulic w Polsce. Potrzebuję wybrac z tej bazy niepowtarzajace sie zakresy numerow domow po to by nadac im poprawne kody pocztowe. Inaczej, chce wyodrebnic poleceniem select te zakresy numerow ktore na siebie "zachodza" czyli sie powtarzaja. Kilka procent rekordow w bazie posiada wlasnie powtarzajace sie numery. Oto struktura czesci bazy(przyklad):

ID Miasto Ulica nieparzyste_od nieparzyste_do parzyste_od parzyste_do
1 Krakow Dluga 1 9 2 10
2 Krakow Dluga 11 29 12 30
3 Krakow Dluga 31 69 32 70
4 Krakow Dluga 41 79 42 80
5 Krakow Dluga 81 101 82 102
6 Krakow Dluga 103 133 104 134


Jak widac w przykladzie rekord 3 i 4 posiada zakresy numerow ktore sie dubluja. Chce je wyselekcjonowac, czyli takie zapytanie napisac aby z tego przykladu wybralo mi 3 i 4 rekord. oto zapytanie, od ktorego zaczalem ale ono nie rozwiazuje problemu:
  1. SELECT miasto, ulica, nieparzyste_od, nieparzyste_do, parzyste_od,
  2. parzyste_do
  3. FROM tabela WHERE (
  4. /* eliminacja wartosci NULL */
  5. (miasto IS NOT NULL) AND (ulica IS NOT NULL) AND (nieparzyste_od IS NOT NULL) AND (nieparzyste_do IS NOT NULL) AND (parzyste_od IS NOT NULL) AND (parzyste_do IS NOT NULL)
  6. ) AND (
  7. (miasto = miasto) AND (ulica = ulica) AND ((nieparzyste_od >= nieparzyste_od) AND (nieparzyste_od <= nieparzyste_do)) AND ((parzyste_od >= parzyste_od) AND (parzyste_od <= parzyste_do))
  8. )
  9.  
  10. GROUP BY miasto, ulica, nieparzyste_od, nieparzyste_do, parzyste_od,
  11. parzyste_do
  12. ORDER BY miasto, ulica;


jesli ktos jest w stanie prosze o jakas pomoc
winksmiley.jpg

Ten post edytował morrison 22.05.2005, 17:08:49


--------------------
Go to the top of the page
+Quote Post
No1B
post 22.05.2005, 17:54:19
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 10.11.2003

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


kodzik:
  1. SELECT DISTINCT a.id, b.id
  2. FROM tabela a
  3. INNER JOIN tabela b ON (a.miasto=b.miasto) AND (a.ulica=b.ulica) AND (a.id < b.id) AND ((a.nieparzyste_od BETWEEN b.nieparzyste_od AND b.nieparzyste_do) OR (b.nieparzyste_od BETWEEN a.nieparzyste_od AND a.nieparzyste_do) OR (a.parzyste_od BETWEEN b.parzyste_od AND b.parzyste_do) OR (b.parzyste_od BETWEEN a.parzyste_od AND a.parzyste_do) OR (a.nieparzyste_do BETWEEN b.nieparzyste_od AND b.nieparzyste_do) OR (b.nieparzyste_do BETWEEN a.nieparzyste_od AND a.nieparzyste_do) OR (a.parzyste_do BETWEEN b.parzyste_od AND b.parzyste_do) OR (b.parzyste_do BETWEEN a.parzyste_od AND a.parzyste_do)
  4. )


oczywiscie mozna dodac jeszcze dodatkowe kryteria na parzystosc/nieparzystosc danych zakresow ale skrypt powinien dzialac aarambo.gif

Pozdrawiam

PS. Baza wyglada mi na baze hogi ew. pp

Ten post edytował No1B 22.05.2005, 18:03:17


--------------------
Apache 2.0.53 | PHP 5.0.3 | MSSQL 2000 SP4
Go to the top of the page
+Quote Post
morrison
post 22.05.2005, 21:36:48
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 24.05.2004
Skąd: krakow

Ostrzeżenie: (10%)
X----


dzieki za pomoc, to dobre rozwiazanie. Tak to jedna z baz Hogi winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:56