simenss Skrevet 8. november 2003 Forfatter Del Skrevet 8. november 2003 Den alternative måten jeg tenkte på i går, var å lage en temporær tabell som du kopierer alle relevante data til, for så å gjøre select'en: CREATE TEMPORARY TABLE temp_url TYPE=HEAP (id int(3), url varchar(100)); INSERT INTO temp_url (id, url) SELECT id, url FROM table1; INSERT INTO temp_url (id, url) SELECT id, url FROM table2; INSERT INTO temp_url (id, url) SELECT id, url FROM table3; INSERT INTO temp_url (id, url) SELECT id, url FROM table4; SELECT * FROM temp_url WHERE id = '$id'; DROP TABLE temp_url; Siden HEAP arbeider i memory, så burde den gå relativt raskt. Er dette en spørring som skal puttes sammen inn i: $query = mysql_query("SPØRRING?"); Er ikke helt ferdigutlært Lenke til kommentar
simenss Skrevet 8. november 2003 Forfatter Del Skrevet 8. november 2003 Det fungerte fint med spørringen: SELECT DISTINCT $id AS id, IF(Tabell1.id=$id,Tabell1.url,IF(Tabell2.id=$id,Tabell2.url,Tabell3.url)) as url FROM Tabell1, Tabell2, Tabell3 WHERE Tabell1.id=$id OR Tabell2.id=$id OR Tabell3.id=$id Men når jeg prøver å øke antall tabeller til 4 går det sinnsykt tregt! Lenke til kommentar
sofTest Skrevet 8. november 2003 Del Skrevet 8. november 2003 Er dette en spørring som skal puttes sammen inn i: $query = mysql_query("SPØRRING?"); Er ikke helt ferdigutlært Nei, dette må kjøres som 7 separate "spørringer" mot mySQL. Det går nok å trekke dette sammen litt, men gjør det enkelt her siden jeg ikke har mulighet til å teste selv. Hvilken versjon av mySQL kjører du? Kjør "SELECT VERSION();" hvis du er usikker. Lenke til kommentar
simenss Skrevet 8. november 2003 Forfatter Del Skrevet 8. november 2003 Nei, dette må kjøres som 7 separate "spørringer" mot mySQL. Det går nok å trekke dette sammen litt, men gjør det enkelt her siden jeg ikke har mulighet til å teste selv. Hvilken versjon av mySQL kjører du? Kjør "SELECT VERSION();" hvis du er usikker. Versjon 3.23.58 Lenke til kommentar
GNUfan Skrevet 8. november 2003 Del Skrevet 8. november 2003 Nei, dette må kjøres som 7 separate "spørringer" mot mySQL. Det går nok å trekke dette sammen litt, men gjør det enkelt her siden jeg ikke har mulighet til å teste selv. Hvilken versjon av mySQL kjører du? Kjør "SELECT VERSION();" hvis du er usikker. Versjon 3.23.58 Det der er en gammel versjon. Prøv og se om du kan få oppgradert. Lenke til kommentar
sofTest Skrevet 8. november 2003 Del Skrevet 8. november 2003 Versjon 3.23.58 OK, det er derfor union fra i går ikke fungerer. Hadde vært den mest elegante løsningen. Som sagt, så kjenner jeg ikke PHP, men har sjekket litt i dokumentasjonen. Hvis jeg forstår den riktig, så blir de 7 linjene slik i PHP: mysql_query("CREATE TEMPORARY TABLE temp_url TYPE=HEAP (id int(3), url varchar(100))"); mysql_query("INSERT INTO temp_url (id, url) SELECT id, url FROM table1"); mysql_query("INSERT INTO temp_url (id, url) SELECT id, url FROM table2"); mysql_query("INSERT INTO temp_url (id, url) SELECT id, url FROM table3"); mysql_query("INSERT INTO temp_url (id, url) SELECT id, url FROM table4"); $query = mysql_query("SELECT * FROM temp_url WHERE id = '$id'"); mysql_query("DROP TABLE temp_url"); Lenke til kommentar
RottePostei Skrevet 9. november 2003 Del Skrevet 9. november 2003 Det fungerte fint med spørringen: SELECT DISTINCT $id AS id, IF(Tabell1.id=$id,Tabell1.url,IF(Tabell2.id=$id,Tabell2.url,Tabell3.url)) as url FROM Tabell1, Tabell2, Tabell3 WHERE Tabell1.id=$id OR Tabell2.id=$id OR Tabell3.id=$id Men når jeg prøver å øke antall tabeller til 4 går det sinnsykt tregt! Den lager et kartesisk produkt av alle tabellene så det er ikke så rart det går tregt. Jeg ville nok heller brukt 4 queries slik som jeg viste med PHP-koden. Lenke til kommentar
Torbjørn Skrevet 9. november 2003 Del Skrevet 9. november 2003 hvorfor har du data i så mange forskjellige tabeller? går det an å løse dette på helt andre måter? Lenke til kommentar
simenss Skrevet 9. november 2003 Forfatter Del Skrevet 9. november 2003 hvorfor har du data i så mange forskjellige tabeller? går det an å løse dette på helt andre måter? Jeg har det i fire tabeller, fordi hver tabell inneholder url til fire forskjellige typer filer. Det er også stor forskjell på radene i de fire tabellene. Lenke til kommentar
simenss Skrevet 9. november 2003 Forfatter Del Skrevet 9. november 2003 Nei, dette må kjøres som 7 separate "spørringer" mot mySQL. Det går nok å trekke dette sammen litt, men gjør det enkelt her siden jeg ikke har mulighet til å teste selv. Hvilken versjon av mySQL kjører du? Kjør "SELECT VERSION();" hvis du er usikker. Versjon 3.23.58 Det der er en gammel versjon. Prøv og se om du kan få oppgradert. Jeg har sendte en mail til hosten av mitt webhotell og spurt om oppgradering Lenke til kommentar
simenss Skrevet 9. november 2003 Forfatter Del Skrevet 9. november 2003 $myrow = ""; $antall_tabeller = 4; for ($j = 1; $j <= $antall_tabeller; $j++) { $sql = "SELECT * FROM Tabell".$j" WHERE id=".$id; $result = mysql_query($sql); if ($myrow = mysql_fetch_array($result)) { break; } } if (!$myrow) { echo "Fant ingen resultater med id=".$id; } else { echo "Fant url ".$myrow["url"]; } Når jeg bruker denne PHP-koden kommer denne feilmeldingen opp: Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/httpd/vhosts/httpdocs/test.php on line 20 Må jeg endre på noe i koden? Lenke til kommentar
Gjest Slettet-rXRozPkg Skrevet 9. november 2003 Del Skrevet 9. november 2003 Jeg regner med at dette er linje 20: $sql = "SELECT * FROM Tabell".$j" WHERE id=".$id; Bytt til: $sql = "SELECT * FROM Tabell".$j." WHERE id='$id'"; Eller: $sql = "SELECT * FROM Tabell$j WHERE id='$id'"; Lenke til kommentar
simenss Skrevet 9. november 2003 Forfatter Del Skrevet 9. november 2003 Nå kommer det ingen feilmeldinger Men et lite problem, den finner ingen av id'ene. Det kommer bare opp: Fant ingen resultater med id=9 Lenke til kommentar
Gjest Slettet-rXRozPkg Skrevet 9. november 2003 Del Skrevet 9. november 2003 Ligger det noe i tabellen på id 9 da? Skriv også ut SQL strengen og eventuelle feilmeldinger, så blir det lettere å debugge. Kan f.eks gjøres slik: echo $sql."<br>"; $result = mysql_query($sql) or die ("Spørringsfeil: ".mysql_error()); Lenke til kommentar
simenss Skrevet 9. november 2003 Forfatter Del Skrevet 9. november 2003 Ligger det noe i tabellen på id 9 da?Skriv også ut SQL strengen og eventuelle feilmeldinger, så blir det lettere å debugge. Kan f.eks gjøres slik: echo $sql."<br>"; $result = mysql_query($sql) or die ("Spørringsfeil: ".mysql_error()); Gjore som du sa og dette kom opp: SELECT * FROM Tabell4 WHERE id='.1' Lenke til kommentar
simenss Skrevet 9. november 2003 Forfatter Del Skrevet 9. november 2003 Nå fant jeg ut problmeter! Det var et pungtum forran id'en i SQL-"spørringen"! Tusen takk, alle som har hjulpet meg! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå