Oprettet tor. d. 03. maj 2001 kl. 08:50:00

krogstrup
krogstrup (19.470 point. Point ude: 840)

Et SQL spørgsmål, tror jeg...

Et teoretisk spm:

Hvordan hentes følgende informationer i een SQL forespørgsel:


<opret forbindelse>
<SQL: select bilID from tableX>
<hent records>
<loop gennem alle mine records>


<opret forbindelse2>
<SQL: select * from tableZ where ID = bilID>
<hent record>
<indlæs data i variabel>
<luk forbindelse>


<next>
<luk forbindelse>


Ovenstående virker jo, MEN belaster server meget, da der for hvert loop bliver åbnet og lukket endnu en database-connection!

Hvordan optimeres ovenstående kode ???

Skrevet tor. d. 03. maj 2001 kl. 08:52:47| #1

senj
senj (30.768 point)
Kan du ikke joine de to tabeller og lave en connection. Derpå selvfølgelig droppe Select * i tilfælde af at du ikke skal bruge alle kolonner?

Skrevet tor. d. 03. maj 2001 kl. 09:14:50| #2

krogstrup
krogstrup (19.470 point)
Jeg er ikke så stærk i relationer mellem tabeller + SQL sproget, så hvis du kunne vise mig et kode eksempel ville jeg være meget taknemmelig :-)

Skrevet tor. d. 03. maj 2001 kl. 09:22:12| #3

senj
senj (30.768 point)
Ok. I øjeblikket arbejder jeg med en udlåns databse, der viser hvilke mus der er udlånt og hvem der har dem.

Jeg henter oplysninger fra 3 tabeller, leverandør, mus, mouse_deal i følgende SQL sætning.

\"SELECT leverandor.id, leverandor.leverandor, mus.id, mus.navn, mus.model, mus.model_nr, mus.hand, mouse_deal.id, mouse_deal.init, mouse_deal.status, mouse_deal.dato_udlaan, mouse_deal.dato_retur, mouse_deal.rykket_dato, mouse_deal.kommentar FROM leverandor, mouse_deal, mus WHERE mus.id = mouse_deal.mus_id And mus.lev_id = leverandor.id;\"

Skrevet tor. d. 03. maj 2001 kl. 09:34:21| #4

krogstrup
krogstrup (19.470 point)
Vil ovenstående SQL eksempel også kunne bruges hvis jeg har brug for følgende:

<opret forbindelse>
<SQL: select bilID from tableX>
<hent records>
<loop gennem alle mine records>

<opret forbindelse2>
<SQL: select * from tableZ where ID = bilID>
<hent record>
<indlæs data i variabel>
<luk forbindelse>


<udskriv variabel fra forbindelse2>
<udskriv diverse data fra forbindelse1>


<next>
<luk forbindelse>


Jeg har altså brug for at der loopes gennem tabel A på basis af diverse kriteriesæt.

I hvert loop ønsker jeg at udskrive diverse data fra mine records. MEN: een af de data jeg ønsker at udskrive er f.eks. et ID, som repræsenterer et navn i tabel B. Jeg skal altså for hvert loop igennem tabel A hente et navn fra tabel B udfra en ID i tabel A.

Wauu - Giver det overhovedet nogen mening ???

:-)

Skrevet tor. d. 03. maj 2001 kl. 09:38:02| #5

senj
senj (30.768 point)
Prøv at beskrive tabellerne så er det lettere at se sammenhængen?

Skrevet tor. d. 03. maj 2001 kl. 09:48:25| #6

krogstrup
krogstrup (19.470 point)
Vi forestiller os at jeg skal lave et system til administrering af domæner:

tableA: ID, domænenavn, mailserverID
tableB: ID, mailserverNavn

Der loopes gennem tableA for at hente ALLE domænenavne. For hvert domænenavn har jeg brug for at lave et opslag i tableB, således at jeg ikke blot udskriver mailserverID på skærmen, men det egentlige navn på mailserveren (som findes i tableB)

Gi´r det mere mening ?

Skrevet tor. d. 03. maj 2001 kl. 09:53:38| #7

senj
senj (30.768 point)
SELECT * FROM tableA, tableB WHERE tableA.id = tableb.id.

Så får du alle rækker i tabel A og hvis der findes et matchende id i tabelB så skriver den også navnet!

Gir det mening? :-)

Skrevet tor. d. 03. maj 2001 kl. 10:11:10| #8

krogstrup
krogstrup (19.470 point)
Mit output skal se således ud:

domæne: kha.dk
mailserver: mail.kha.dk

domæne: microsoft.dk
mailserver: mail.microsoft.dk


Jeg laver min SQL således:

SELECT * FROM tableA, tableB WHERE tableA.mailserverID = tableB.ID

Er det korrekt ?

Hvis ja; hvorledes refererer jeg nu til mit mailservernavn?

<%=rs(\"mailserverNavn\")%>  ?!?!?!

Skrevet tor. d. 03. maj 2001 kl. 10:16:31| #9

senj
senj (30.768 point)
Ja eller
<%
navn = rs(\"mailservernavn\");
%>
og så

<%Response.write(navn)%>


Skrevet tor. d. 03. maj 2001 kl. 11:13:18| #10

krogstrup
krogstrup (19.470 point)
Ahaaaaa - endelig faldt tiøren for mig :-)

TUSIND tak for din tid :-)

Skrevet tor. d. 03. maj 2001 kl. 11:15:14| #11

senj
senj (30.768 point)
Det var så lidt :-)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

ASP: formular udtræk med mulighed for at rette

Oprettet den 21. maj 2012 kl. 15.09
quarkb giver 200 point for svar | Giv et svar »

Sorter biblioteker efter dato i ASP

Oprettet den 17. maj 2012 kl. 16.52
4ks giver 60 point for svar | Giv et svar »

Simpel login-funktion (web) - behov for flere logins/brugere

Oprettet den 15. maj 2012 kl. 09.54
madx giver 75 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger