FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Jag har ett fungerande script som gör nästan samma sak, den såg ut såhär:
Kod:
$num_rows = intval($_GET[num]); $query = "SELECT postnummer as zip,count(*) AS density FROM postnummer GROUP BY postnummer LIMIT 1500"; $result = mysql_query($query); $zip_geo_data_string = file_get_contents('zip_geo_data.txt'); $zip_geo_data = unserialize($zip_geo_data_string); $points = array(); while($row = mysql_fetch_array( $result )) { $row[zip] = str_replace(" ","", $row[zip]); $lat = $zip_geo_data[$row[zip]]['lat']; $lon = $zip_geo_data[$row[zip]]['lon']; array_push($points, array('zip'=>$row[zip], 'density' => $row[density],'lat' => $lat,'lon' => $lon)); } echo json_encode(array("Locations" => $points)); exit; Nu vill jag ta bort matchningen från txt filen och istället matcha mot en databas. Jag har två tabeller. postnummer: id | postnummer postnummer_tbl: zipcode | long | lat Jag vill returnera alla 'postnummer' från "postnummer" som matchar med 'zipcode' i "postnummer_tbl", i fall det är flera 'postnummer' som är lika så vill jag endast ha en rad men även räkna ut hur många som är samma. = density. Sedan vill jag para ihop rätt postnummer med 'zipcode' och hämta ut long, lat och density och göra till json kod för att kunna plotta ut på karta. Har testat bl.a: Kod:
$query = "SELECT zipcode, `long`, lat FROM postnummer_tbl JOIN postnummer ON zipcode=postnummer"; Senast redigerad av bassan den 2010-10-20 klockan 16:28 |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Supermoderator
|
Vad är det för databas?
Du är ute efter en OUTER JOIN i stil med Kod:
SELECT postnummer, long, lat FROM postnummer_tbl, postnummer WHERE postnummer.postnummer=postnummer_tbl.zipcode (+) ![]()
__________________
Jonny Zetterström se.linkedin.com/in/jonnyz | bjz.se | sajthotellet.com | kalsongkungen.se | zretail.se | zetterstromnetworks.se | webbhotellsguide.se | ekonominyheter24.se | nyamobiltelefoner.se | gapskratt.se | antivirusguiden.se | jonny.nu |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Får fram rätt data tror jag, men inte med density och det är flera postnummer som kommer flera gånger =/
En bit på vägen i alla fall! ![]() EDIT: Postnumret som returneras är samma på alla rader men inte long och lat (?) Senast redigerad av bassan den 2010-10-20 klockan 16:24 |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
Kod:
SELECT `postnummer`.`postnummer`, `postnummer_tbl`.`long`, `postnummer_tbl`.`lat`, count(`postnummer`.`id`) AS density FROM `postnummer_tbl`, `postnummer` WHERE `postnummer`.`postnummer`=`postnummer_tbl`.`zipcode` Annars borde denna fungera minst lika bra: PHP-kod:
|
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Tack för att du har tagit dig tid!
Dock fungerar det inte, jag kör den i phpmyadmin och får 8 miljoner(!) rader svar på frågan. Och $row[0] (postnummret) blir alltid samma. Vet inte vad det kan bero på... Jag vill alltså enbart ha ut postnumren i postnummer (ca 400 poster totalt, varav många är samma och då ska density ska bli högre). |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
Density kommer aldrig bli högre än antalet rader som returneras. Oavsett om du använder COUNT() eller mysql_num_rows()
Har du testat: SELECT DISTINCT ... ? och skippa GROUP BY. |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Testade exakt den här:
SELECT `postnummer`.`postnummer`, `postnummer_tbl`.`long`, `postnummer_tbl`.`lat`, count(`postnummer`.`id`) AS density FROM `postnummer_tbl`, `postnummer` WHERE `postnummer`.`postnummer`=`postnummer_tbl`.`zipcod e` Får exakt 1 rad: postnummer long lat density 32767 57.1752 13.7368 8886089 |
||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Mycket flitig postare
|
Prova
Kod:
$query = "SELECT POSTNUMMER as zip,count(*) AS density,zips.lat,zips.lon FROM `postnummer` LEFT JOIN zips ON postnummer.postnummer = zips.zip GROUP BY POSTNUMMER ORDER BY density DESC LIMIT $num_rows"; |
|||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
Fick 21 raders svar:
Kod:
zip density lat long 32767 8886070 13.7368 57.1752 16864 1 17.9345 59.363 22479 1 13.1914 55.703 25748 1 NULL NULL 17675 1 17.7944 59.4704 14652 1 17.9009 59.2292 27231 1 14.3547 55.5566 29438 1 14.5914 56.075 16552 1 17.8441 59.3761 26061 1 12.8624 56.1042 28140 1 13.7854 56.1646 26243 1 12.8863 56.2684 12059 1 18.0519 59.3032 22355 1 13.1974 55.6814 14149 1 17.9728 59.2117 21365 1 13.0393 55.5863 16447 1 17.9369 59.4024 11420 1 18.059 59.3505 25223 1 12.7023 56.045 65 1 NULL NULL 11737 1 18.0289 59.317 21119 1 12.984 55.613 |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Medlem
|
Vart hämtar du postnummeruppgifterna ifrån och hur ofta får du uppdateringar av postnummer/koordinater?
Det tar ju inte många månader innan uppgifterna är inaktuella enligt egna erfarenheter. |
||
![]() |
![]() |
Svara |
|
|