05. januar 2006 - 15:46Der er
15 kommentarer og 1 løsning
Hente fra database med information fra anden database.
Hvordan henter jeg noget fra en database med informationer jeg henter fra en anden? Lyder nok lidt kringlet, men har prøvet at gøre det så enkelt som muligt.
hvis jeg nu med følgene kode henter nogle tal fra en database, og den så skal gå ind og hente navnene på de tal fra en anden database, hvordan gør man så lige det?
database 1; en masse informationer + id til hver.
database 2; 1 = jens 2 = knud 3 = børge 4 = ander
her hvor jeg så skriver database 1 ud, vil jeg gerne have den går ind og henter navnet på hver id i database 2.
Således at hvis den ville skrive 3 ud som id, så skriver den børge istedet.
Håber jeg fik forklaret det nogelunde..
$query = mysql_query("SELECT id,header,UserId,LastWriter,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM LovehinaForum2 ORDER BY id DESC LIMIT $offset,$range") or die(mysql_error());
$hent1 = mysql_query("SELECT * FROM databasemedtal ORDER BY id DESC") pr die(mysql_error()); while($vis1 = mysql_fetch_array($hent1)){ $hent2 = mysql_query("SELECT * FROM databasemednavne WHERE id = '$vis1[id]'") or die(mysql_error()); $vis2 = mysql_fetch_array($hent2); echo $vis2[navn]; }
Du mener vel tabeller? Eller mener du to forskellige databaser? Hvis det er tabeller, kan det gøres med join, hvis det er databaser, skal du sandsynligvis have forskellige forbindelser til det.
Det er ikke muligt webstuff, man skal nemlig lukke den ene før man begynder på den anden :)
prøv med:
$q = mysql_query(" SELECT artikler.*, brugere.brugernavn FROM artikler LEFT JOIN brugere ON artikler.forfatter = brugere.brugernavn WHERE brugere.id = ".$_GET['id']." ORDER BY artikler.dato DESC "); while($row = mysql_fetch_assoc($q)) {
Altså, hvis det bare er to tabeller, så brug dog en join?
$hent = mysql_query(" SELECT tabelmednavne.navn FROM tabelmedtal INNER JOIN tabelmednavne ON tabelmedtal.id = tabelmednavne.id ORDER BY id DESC ") or die("SQLFejl: ".mysql_error());
Jeg kan ikke se hvorfor det er så meget smartere? det andet er da nemmere at finde rundt i? og jeg skal også bruge mere fra den tabel end bare lige det tal der, jeg skal bruge ret meget fra begge tabeller :)
Det ene lavet én forespørgsel i databasen, det andet laver (antal rækker + 1) - gæt selv, hvad der går hurtigst, hvad der er mest optimalt, og hvad "man" bruger, når man laver større applikationer. Skal du bruge mere, så trækker du blot flere attributter ud - du angiver præcis de attributter, som du skal bruge, efter SELECT. Du skal aldrig skrive *, men kun de attributter, som du har brug for. Det andet er spild af ram, ressourcer og meget andet.
Man må godt lave det ordentligt, selvom det bare er en lille ting. :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.