/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
[VB6] SQL String
Fra : Johnny E Jensen


Dato : 18-02-03 15:05

Hej NG

Et kvikt SQL hoved søges:

Med denne får jeg et tomt resultat. Der findes record i (A) men ikke i
B) - skulle LEFT OUTER ikke returnere resultat fra tabellen til venstre og
så erstatte tabel-resultatet med 'tomt' fra tabellen til højre?
SELECT * FROM debitor.dbo.debregp1 AS A LEFT OUTER JOIN debitor.dbo.debregp2
AS B

ON a.koncrn=b.koncrn AND a.firma=b.firma AND a.kdbkr=b.kdbkr

WHERE a.koncrn=1 AND a.firma=120 AND a.kdbkr= 55555

Hilsen

Johnny Jensen





 
 
Krabsen (19-02-2003)
Kommentar
Fra : Krabsen


Dato : 19-02-03 12:35

Tjo, det gør det da hos mig (i Access) hvis jeg laver en tilsvarende i en af
mine databaser.
Bortset lige fra, at det vel skal være en RIGHT JOIN


Men hvorfor omvejen via 'as a' ? ..idet jeg formoder, at
debitor.dbo.debregp1
og
debitor.dbo.debregp2

er to _forskellige_ tabeller og ikke to instanser af den samme..

mvh
Krabsen


"Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
news:3e523cfb$0$138$edfadb0f@dtext02.news.tele.dk...
> Hej NG
>
> Et kvikt SQL hoved søges:
>
> Med denne får jeg et tomt resultat. Der findes record i (A) men ikke i
> B) - skulle LEFT OUTER ikke returnere resultat fra tabellen til venstre
og
> så erstatte tabel-resultatet med 'tomt' fra tabellen til højre?
> SELECT * FROM debitor.dbo.debregp1 AS A LEFT OUTER JOIN
debitor.dbo.debregp2
> AS B
>
> ON a.koncrn=b.koncrn AND a.firma=b.firma AND a.kdbkr=b.kdbkr
>
> WHERE a.koncrn=1 AND a.firma=120 AND a.kdbkr= 55555



Johnny E Jensen (19-02-2003)
Kommentar
Fra : Johnny E Jensen


Dato : 19-02-03 14:14

Hej

Årsagen ti AS a/AS b der er felt navne der er ens i de to tabeller. Derved
kan du ikke lave WHERE sætningen

Jeg prøvede godt nok også med RIGHT JOIN men samme resultat...(TOMT)

/Johnny

"Krabsen" <news@krabsen.dk> wrote in message news:b2vq4t$1a9$1@sunsite.dk...
> Tjo, det gør det da hos mig (i Access) hvis jeg laver en tilsvarende i en
af
> mine databaser.
> Bortset lige fra, at det vel skal være en RIGHT JOIN
>
>
> Men hvorfor omvejen via 'as a' ? ..idet jeg formoder, at
> debitor.dbo.debregp1
> og
> debitor.dbo.debregp2
>
> er to _forskellige_ tabeller og ikke to instanser af den samme..
>
> mvh
> Krabsen
>
>
> "Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
> news:3e523cfb$0$138$edfadb0f@dtext02.news.tele.dk...
> > Hej NG
> >
> > Et kvikt SQL hoved søges:
> >
> > Med denne får jeg et tomt resultat. Der findes record i (A) men ikke i
> > B) - skulle LEFT OUTER ikke returnere resultat fra tabellen til venstre
> og
> > så erstatte tabel-resultatet med 'tomt' fra tabellen til højre?
> > SELECT * FROM debitor.dbo.debregp1 AS A LEFT OUTER JOIN
> debitor.dbo.debregp2
> > AS B
> >
> > ON a.koncrn=b.koncrn AND a.firma=b.firma AND a.kdbkr=b.kdbkr
> >
> > WHERE a.koncrn=1 AND a.firma=120 AND a.kdbkr= 55555
>
>



Krabsen (19-02-2003)
Kommentar
Fra : Krabsen


Dato : 19-02-03 18:13

Jo det kan du nu sagtens

'Jeg bruger det selv'..


WHERE a.koncrn=1
og
WHERE debitor.dbo.debregp1.koncrn=1


burde give helt samme resultat??

mvh
Krabsen


"Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
news:3e5382a2$0$147$edfadb0f@dtext02.news.tele.dk...
> Hej
>
> Årsagen ti AS a/AS b der er felt navne der er ens i de to tabeller. Derved
> kan du ikke lave WHERE sætningen
>
> Jeg prøvede godt nok også med RIGHT JOIN men samme resultat...(TOMT)
>
> /Johnny
>
> "Krabsen" <news@krabsen.dk> wrote in message
news:b2vq4t$1a9$1@sunsite.dk...
> > Tjo, det gør det da hos mig (i Access) hvis jeg laver en tilsvarende i
en
> af
> > mine databaser.
> > Bortset lige fra, at det vel skal være en RIGHT JOIN
> >
> >
> > Men hvorfor omvejen via 'as a' ? ..idet jeg formoder, at
> > debitor.dbo.debregp1
> > og
> > debitor.dbo.debregp2
> >
> > er to _forskellige_ tabeller og ikke to instanser af den samme..
> >
> > mvh
> > Krabsen
> >
> >
> > "Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
> > news:3e523cfb$0$138$edfadb0f@dtext02.news.tele.dk...
> > > Hej NG
> > >
> > > Et kvikt SQL hoved søges:
> > >
> > > Med denne får jeg et tomt resultat. Der findes record i (A) men ikke i
> > > B) - skulle LEFT OUTER ikke returnere resultat fra tabellen til
venstre
> > og
> > > så erstatte tabel-resultatet med 'tomt' fra tabellen til højre?
> > > SELECT * FROM debitor.dbo.debregp1 AS A LEFT OUTER JOIN
> > debitor.dbo.debregp2
> > > AS B
> > >
> > > ON a.koncrn=b.koncrn AND a.firma=b.firma AND a.kdbkr=b.kdbkr
> > >
> > > WHERE a.koncrn=1 AND a.firma=120 AND a.kdbkr= 55555
> >
> >
>
>



Tomas Christiansen (19-02-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 19-02-03 22:11

Krabsen skrev:
> WHERE a.koncrn=1
> WHERE debitor.dbo.debregp1.koncrn=1

Rent principielt burde man _altid_ holde sig til den første form.

Det er naturligvis lettere at læse koden, når SQL-forespørgslerne
bliver lange (og det synes jeg at de har en tendens til), at
tabel-navnet er kort (og måske ligefrem _sigende_ i sammenhængen).

Men en anden årsag er også, at det er lettere at ændre forespørgslen
til at benytte en anden tabel/andet tabel-navn, idet tabellens
faktiske navn kun refereres ét sted i forespørgslen. Det kan være
fordi tabellen er omdøbt, men det kan også være ret anvendeligt i
visse test-sammenhænge.

-------
Tomas


Johnny E Jensen (19-02-2003)
Kommentar
Fra : Johnny E Jensen


Dato : 19-02-03 22:48

Hej
Og en anden_god_grund til at holde forespørgslerne til minimale
er mængden af trafik mellem klient/server. Der er trafik nok i forevejen,
så ingen grund til at øge denne når det kan ungås..

/Johnny



Tomas Christiansen (19-02-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 19-02-03 23:47

Johnny E Jensen skrev:
> Og en anden_god_grund til at holde forespørgslerne til minimale
> er mængden af trafik mellem klient/server. Der er trafik nok i
forevejen,
> så ingen grund til at øge denne når det kan ungås..

Nå, ja.
Når man arbejder på et 100Mbit LAN tænker man ikke så meget over
datamængden...

-------
Tomas


Johnny E Jensen (20-02-2003)
Kommentar
Fra : Johnny E Jensen


Dato : 20-02-03 00:00

Hej
Nej men når nogle af vores kontorer sidder på en 32Kbit FrameRelay
så SKAL der tænkes....
Der gudskelov snart bliver udskiftet....

/Johnny

"Tomas Christiansen" <toc-nospam-01@blikroer.dk> wrote in message
news:b311f0$2bmf$1@news.cybercity.dk...
> Johnny E Jensen skrev:
> > Og en anden_god_grund til at holde forespørgslerne til minimale
> > er mængden af trafik mellem klient/server. Der er trafik nok i
> forevejen,
> > så ingen grund til at øge denne når det kan ungås..
>
> Nå, ja.
> Når man arbejder på et 100Mbit LAN tænker man ikke så meget over
> datamængden...
>
> -------
> Tomas
>



Johnny E Jensen (19-02-2003)
Kommentar
Fra : Johnny E Jensen


Dato : 19-02-03 22:41

Hej

Prøv selv lige dette regnestykke... 10 'joinet' tabeller med hver 5-10
sammenfaldende felt navne
Det bliver noget af en størrelse query...

/Johnny

"Krabsen" <news@krabsen.dk> wrote in message news:b30du9$gv5$1@sunsite.dk...
> Jo det kan du nu sagtens
>
> 'Jeg bruger det selv'..
>
>
> WHERE a.koncrn=1
> og
> WHERE debitor.dbo.debregp1.koncrn=1
>
>
> burde give helt samme resultat??
>
> mvh
> Krabsen
>
>
> "Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
> news:3e5382a2$0$147$edfadb0f@dtext02.news.tele.dk...
> > Hej
> >
> > Årsagen ti AS a/AS b der er felt navne der er ens i de to tabeller.
Derved
> > kan du ikke lave WHERE sætningen
> >
> > Jeg prøvede godt nok også med RIGHT JOIN men samme resultat...(TOMT)
> >
> > /Johnny
> >
> > "Krabsen" <news@krabsen.dk> wrote in message
> news:b2vq4t$1a9$1@sunsite.dk...
> > > Tjo, det gør det da hos mig (i Access) hvis jeg laver en tilsvarende i
> en
> > af
> > > mine databaser.
> > > Bortset lige fra, at det vel skal være en RIGHT JOIN
> > >
> > >
> > > Men hvorfor omvejen via 'as a' ? ..idet jeg formoder, at
> > > debitor.dbo.debregp1
> > > og
> > > debitor.dbo.debregp2
> > >
> > > er to _forskellige_ tabeller og ikke to instanser af den samme..
> > >
> > > mvh
> > > Krabsen
> > >
> > >
> > > "Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
> > > news:3e523cfb$0$138$edfadb0f@dtext02.news.tele.dk...
> > > > Hej NG
> > > >
> > > > Et kvikt SQL hoved søges:
> > > >
> > > > Med denne får jeg et tomt resultat. Der findes record i (A) men ikke
i
> > > > B) - skulle LEFT OUTER ikke returnere resultat fra tabellen til
> venstre
> > > og
> > > > så erstatte tabel-resultatet med 'tomt' fra tabellen til højre?
> > > > SELECT * FROM debitor.dbo.debregp1 AS A LEFT OUTER JOIN
> > > debitor.dbo.debregp2
> > > > AS B
> > > >
> > > > ON a.koncrn=b.koncrn AND a.firma=b.firma AND a.kdbkr=b.kdbkr
> > > >
> > > > WHERE a.koncrn=1 AND a.firma=120 AND a.kdbkr= 55555
> > >
> > >
> >
> >
>
>



Krabsen (19-02-2003)
Kommentar
Fra : Krabsen


Dato : 19-02-03 22:55

Ja det kan der da være noget om, selvom jeg har det fint nok med laaaaaange
sql'er. Min hidtidige rekord er vistnok ½ A4-side, men den var osse påhæftet
bemærkningen 'nix pille!'

Men det lød nu lidt som om du mente, at du ikke _kunne_ lace sql'en uden
alias'er..

Helt bortset fra det: Er det i Access - for så _skal_ dit oprindelige
spørgsmål altså kunne lade sig gøre. Kan du evt. låne en bid af databasen
ud, så det kan prøves i real life? Som sagt virker det hos mig på en
tilsvarende struktur, så et eller andet sted må der være en forskel.

mvh
Krabsen



"Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
news:3e53f989$0$129$edfadb0f@dtext02.news.tele.dk...
> Hej
>
> Prøv selv lige dette regnestykke... 10 'joinet' tabeller med hver 5-10
> sammenfaldende felt navne
> Det bliver noget af en størrelse query...
>
> /Johnny
>
> "Krabsen" <news@krabsen.dk> wrote in message
news:b30du9$gv5$1@sunsite.dk...
> > Jo det kan du nu sagtens
> >
> > 'Jeg bruger det selv'..
> >> > WHERE a.koncrn=1
> > og
> > WHERE debitor.dbo.debregp1.koncrn=1
> >
> >
> > burde give helt samme resultat??
> >
> > mvh
> > Krabsen
> >
> >
> > "Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
> > news:3e5382a2$0$147$edfadb0f@dtext02.news.tele.dk...
> > > Hej
> > >
> > > Årsagen ti AS a/AS b der er felt navne der er ens i de to tabeller.
> Derved
> > > kan du ikke lave WHERE sætningen
> > >
> > > Jeg prøvede godt nok også med RIGHT JOIN men samme resultat...(TOMT)
> > >
> > > /Johnny
> > >



Johnny E Jensen (20-02-2003)
Kommentar
Fra : Johnny E Jensen


Dato : 20-02-03 00:05

He He

Jeg ved ikke hvor mange tegn der kan ligge på en ½A4 side, men den støreste
jeg selv har
lavet blev på 6012 bytes.

Og jeg har fået sql'en til at køre. LEFT JOIN returnerer alle records fra
primær selv om der ikke er
records i sekundær. Hvor fejlen lå fant jeg ikke ud af, men har lige
arbejdet med noget andet
og her virker det fint.

/Johnny



Krabsen (20-02-2003)
Kommentar
Fra : Krabsen


Dato : 20-02-03 08:34

Du har nok kløet PC'en lidt bag venstre højttaler - det virker indimellem


Og så siger man, at Computtere ikke har følelser..


mvh
Krabsen



"Johnny E Jensen" <emde@emde.dk> skrev i en meddelelse
news:3e540d1e$0$144$edfadb0f@dtext02.news.tele.dk...
> He He
> >
> Og jeg har fået sql'en til at køre. LEFT JOIN returnerer alle records fra
> primær selv om der ikke er
> records i sekundær. Hvor fejlen lå fandt jeg ikke ud af, men har lige
> arbejdet med noget andet og her virker det fint.
>



Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste