11. oktober 2006 - 15:21Der er
2 kommentarer og 1 løsning
hent fra flere db'er i en SQL sætning
hej er der nogen der han hjælpe mig med at hente data fra 3 mysql db’er samtidig.
De 3 db’er
Lande `id` int(11) NOT NULL auto_increment, `CountryCode` varchar(3) NOT NULL, `CountryName` varchar(255) NOT NULL,
Links_overskrift `overskrift_id` int(11) NOT NULL auto_increment, `overskrift` text NOT NULL,
Links `id` int(11) NOT NULL auto_increment, `link` text NOT NULL, `hits` int(11) NOT NULL, `comment` text NOT NULL, `contry` varchar(255) NOT NULL, (Her sætter jeg ContryCode feltet fra db’en Lande ins så jeg kan finde ud af hvilke land linket høre til under) `headline_id` int(11) NOT NULL,(Her sætter jeg id feltet fra links_overskrift db’en såjeg ved hvilken overskrift linket høre til under. )
Mit problem består i at jeg skal have konstroeret en SQL sætning der henter: - Alle alle felter i Link DB’en - Det CountryName fra Lande db’en der passer sammen med contry feltet fra Link db’en - Henter den overskrift fra Links_overskrift db’en der passer sammen med hedline_id fra Links db’en
Tror du misformulerer dit spørgsmål. Der er ikke tale om at selecte data fra flere db'er på en gang, men fra flere tables. Ved hvad du mener, men det er vigtigt lige at få terminologien på plads ;).
Du skal nok kigge nærmere på joins, da dette er en essentiel del af en relationel databasestruktur. For at du kan få et output som du adspørger kan du formulere din SQL på følgende måde:
SELECT links.*, lande.CountryName, Links_overskrift.overskrift FROM links INNER JOIN lande ON lande.id = links.country /* Jeg benytter her lande.id, da det umiddelbart giver mest mening (du kan da ændre din countrycode uden at skulle ændre dine relationer) */ INNER JOIN links_overskrift ON links_overskrift.overskrift_id = links.headline_id
Jeg vil godt anbefale dig at du omstrukturerer din database. Du bør altid bruge ens navne for tabellernes id-felt (undtagen hvis du naturligvis bruger præfix), og holde navne på referencer i en standard som f.eks. [tabel]_id. Således virker det forvirrende når du har en tabel der hedder "Links_overskrift", hvor id-feltet hedder "overskrift_id", og referencen fra "Links" hedder "headline_id". Blot et tip ;). Brug heller aldrig information der evt. skal ændres i fremtiden til referencer. F.eks. bruger du CountryCode som reference, men hvis du nu havde skrevet SW for Sverige, frem for SE (som er korrekt), og du havde tilføjet 2000 links, så skulle du opdatere samtlige af de links for at rette din trykfejl. Det er her mere hensigtsmæssigt at du benytter dig af et id-nummer der aldrig vil ændre sig. Det er jo også hele fordelen ved en database med relationer ;).
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.