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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Noget JOIN
Fra : Harald


Dato : 22-11-03 18:13

Jeg har 2 tabeller:

Tabel1:
IDKode : integer
Navn: string
Adresse: string
Landekode : string
+ en masse andre felter

Tabel2:
IDKode : integer
Ejer : integer
Ankomst : Date

Jeg kører så følgende sql:

SELECT * FROM Tabel2 LEFT JOIN Tabel1 ON Table1.IDKode=Table2.Ejer WHERE
Tabel2.Ankomst>"20031122"

det virker også fint men jeg få alle felter med fra Tabel1 og det vil jeg
gerne undgå pga. hastigheden, jeg har kun brug for Landekode fra Table1?

Mvh
HK



 
 
Jimmy (22-11-2003)
Kommentar
Fra : Jimmy


Dato : 22-11-03 18:40


"Harald" <news10@-REMOVE-THIS-kroning.dk> wrote in message
news:3fbf991d$0$150$edfadb0f@dread11.news.tele.dk...
> Jeg har 2 tabeller:
>
> Tabel1:
> IDKode : integer
> Navn: string
> Adresse: string
> Landekode : string
> + en masse andre felter
>
> Tabel2:
> IDKode : integer
> Ejer : integer
> Ankomst : Date
>
> Jeg kører så følgende sql:
>
> SELECT * FROM Tabel2 LEFT JOIN Tabel1 ON Table1.IDKode=Table2.Ejer WHERE
> Tabel2.Ankomst>"20031122"
>
> det virker også fint men jeg få alle felter med fra Tabel1 og det vil jeg
> gerne undgå pga. hastigheden, jeg har kun brug for Landekode fra Table1?

Er det så ikke bare

SELECT Landekode ...

Jeg ved ikke hvilken database eller sprog du anvender, men du burde kunne
nøjes med kun at vælge det felt du ønsker.

Mvh
Jimmy





Harald (23-11-2003)
Kommentar
Fra : Harald


Dato : 23-11-03 00:35

"Jimmy" <nyhedsgruppe2@get2net.danmark> skrev i en meddelelse
news:bpo72d$654$1@sunsite.dk...
>
> "Harald" <news10@-REMOVE-THIS-kroning.dk> wrote in message
> news:3fbf991d$0$150$edfadb0f@dread11.news.tele.dk...
> > Jeg har 2 tabeller:
> >
> > Tabel1:
> > IDKode : integer
> > Navn: string
> > Adresse: string
> > Landekode : string
> > + en masse andre felter
> >
> > Tabel2:
> > IDKode : integer
> > Ejer : integer
> > Ankomst : Date
> >
> > Jeg kører så følgende sql:
> >
> > SELECT * FROM Tabel2 LEFT JOIN Tabel1 ON Table1.IDKode=Table2.Ejer WHERE
> > Tabel2.Ankomst>"20031122"
> >
> > det virker også fint men jeg få alle felter med fra Tabel1 og det vil
jeg
> > gerne undgå pga. hastigheden, jeg har kun brug for Landekode fra Table1?
>
> Er det så ikke bare
>
> SELECT Landekode ...
>
> Jeg ved ikke hvilken database eller sprog du anvender, men du burde kunne
> nøjes med kun at vælge det felt du ønsker.

Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode fra
Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at Landekode skal
puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.

/HK



Jimmy (23-11-2003)
Kommentar
Fra : Jimmy


Dato : 23-11-03 08:50

> Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode fra
> Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at Landekode
skal
> puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.

Hvad har du forsøgt?
Hvilken fejl får du?

SELECT * er alt fra begge tabeller.

SELECT Landekode er kun fra tabel1, da den kun optræder der.

Hvis du ønsker at specificere det kan du sige SELECT Tabel1.Landekode

Mvh
Jimmy



Harald (23-11-2003)
Kommentar
Fra : Harald


Dato : 23-11-03 11:41


"Jimmy" <nyhedsgruppe2@get2net.danmark> skrev i en meddelelse
news:bppor6$4b6$1@sunsite.dk...
> > Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode fra
> > Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at Landekode
> skal
> > puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.
>
> Hvad har du forsøgt?
> Hvilken fejl får du?
>
> SELECT * er alt fra begge tabeller.
>
> SELECT Landekode er kun fra tabel1, da den kun optræder der.
>
> Hvis du ønsker at specificere det kan du sige SELECT Tabel1.Landekode

Jeg har prøvet med:
SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 LEFT JOIN Tabel1 ON
Table1.IDKode=Table2.Ejer WHERE Tabel2.Ankomst>"20031122"

Herfå jeg fejlen: Not unique table/alias: Tabel1

Og denne:
SELECT * FROM Tabel2 LEFT JOIN Tabel1.Landekode ON Table1.IDKode=Table2.Ejer
WHERE Tabel2.Ankomst>"20031122"

Her får jeg som forventet fejlen: Table "Tabel1.Landekode" doesn´t exist.

Jeg har også prøvet:
SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 WHERE
Table1.IDKode=Table2.Ejer AND Tabel2.Ankomst>"20031122"

Den virker men giver så ikke det ønskede resultat, jeg vil have alle records
fra Tabel2 også selvom der ikke findes en Table1.IDKode=Table2.Ejer og det
kan en JOIN jo give mig.

/HK




Rasmus Oudal Edberg (23-11-2003)
Kommentar
Fra : Rasmus Oudal Edberg


Dato : 23-11-03 12:48

"Harald" <news10@-REMOVE-THIS-kroning.dk> writes:

> "Jimmy" <nyhedsgruppe2@get2net.danmark> skrev i en meddelelse
> news:bppor6$4b6$1@sunsite.dk...
>> > Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode fra
>> > Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at Landekode
>> skal
>> > puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.
>>
>> Hvad har du forsøgt?
>> Hvilken fejl får du?
>>
>> SELECT * er alt fra begge tabeller.
>>
>> SELECT Landekode er kun fra tabel1, da den kun optræder der.
>>
>> Hvis du ønsker at specificere det kan du sige SELECT Tabel1.Landekode
>
> Jeg har prøvet med:
> SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 LEFT JOIN Tabel1 ON
> Table1.IDKode=Table2.Ejer WHERE Tabel2.Ankomst>"20031122"
>
> Herfå jeg fejlen: Not unique table/alias: Tabel1
>
> Og denne:
> SELECT * FROM Tabel2 LEFT JOIN Tabel1.Landekode ON Table1.IDKode=Table2.Ejer
> WHERE Tabel2.Ankomst>"20031122"
>
> Her får jeg som forventet fejlen: Table "Tabel1.Landekode" doesn´t exist.
>
> Jeg har også prøvet:
> SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 WHERE
> Table1.IDKode=Table2.Ejer AND Tabel2.Ankomst>"20031122"
>
> Den virker men giver så ikke det ønskede resultat, jeg vil have alle records
> fra Tabel2 også selvom der ikke findes en Table1.IDKode=Table2.Ejer og det
> kan en JOIN jo give mig.
>
> /HK

Hej,

Det er altid pænest explicit at spørge efter de felter man ønsker, fx.

SELECT Table2.felt1, Table2.felt2, Table2.felt3 .... Table1.Landekode
FROM Table2 JOIN Table1
ON Table2.Ejer = Table1.IDKode
WHERE Table2.Ankomst>"20031122"

Jeg håber at ovenstående virker, jeg er ingen ekspert.

ps. hvis du ikke synes det er rart med så lange sql sætninger i din kode,
kan du jo oprette ovenstående som et view og SELECT * fra det view.

--

Mvh.

Rasmus

Harald (23-11-2003)
Kommentar
Fra : Harald


Dato : 23-11-03 15:16


"Rasmus Oudal Edberg" <rasmus@NOSPAMstudentz.dk> skrev i en meddelelse
news:87ad6n9ugv.fsf@freud.studentz.dk...
> "Harald" <news10@-REMOVE-THIS-kroning.dk> writes:
>
> > "Jimmy" <nyhedsgruppe2@get2net.danmark> skrev i en meddelelse
> > news:bppor6$4b6$1@sunsite.dk...
> >> > Ups, glemte at nævne at det er MySQL 3. Jeg skal kun bruge Landekode
fra
> >> > Tabel1 men SELECT * er jo Tabel2, så det er vel noget med at
Landekode
> >> skal
> >> > puttes ind efter JOIN Tabel1, det har jeg så prøvet med uden held.
> >>
> >> Hvad har du forsøgt?
> >> Hvilken fejl får du?
> >>
> >> SELECT * er alt fra begge tabeller.
> >>
> >> SELECT Landekode er kun fra tabel1, da den kun optræder der.
> >>
> >> Hvis du ønsker at specificere det kan du sige SELECT Tabel1.Landekode
> >
> > Jeg har prøvet med:
> > SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 LEFT JOIN Tabel1
ON
> > Table1.IDKode=Table2.Ejer WHERE Tabel2.Ankomst>"20031122"
> >
> > Herfå jeg fejlen: Not unique table/alias: Tabel1
> >
> > Og denne:
> > SELECT * FROM Tabel2 LEFT JOIN Tabel1.Landekode ON
Table1.IDKode=Table2.Ejer
> > WHERE Tabel2.Ankomst>"20031122"
> >
> > Her får jeg som forventet fejlen: Table "Tabel1.Landekode" doesn´t
exist.
> >
> > Jeg har også prøvet:
> > SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 WHERE
> > Table1.IDKode=Table2.Ejer AND Tabel2.Ankomst>"20031122"
> >
> > Den virker men giver så ikke det ønskede resultat, jeg vil have alle
records
> > fra Tabel2 også selvom der ikke findes en Table1.IDKode=Table2.Ejer og
det
> > kan en JOIN jo give mig.
> >
> > /HK
>
> Hej,
>
> Det er altid pænest explicit at spørge efter de felter man ønsker, fx.
>
> SELECT Table2.felt1, Table2.felt2, Table2.felt3 .... Table1.Landekode
> FROM Table2 JOIN Table1
> ON Table2.Ejer = Table1.IDKode
> WHERE Table2.Ankomst>"20031122"
>
> Jeg håber at ovenstående virker, jeg er ingen ekspert.
>
> ps. hvis du ikke synes det er rart med så lange sql sætninger i din kode,
> kan du jo oprette ovenstående som et view og SELECT * fra det view.

Jeg havde skrevet:
SELECT Tabel2.*, Tabel1.Landekode FROM Tabel2, Tabel1 LEFT JOIN Tabel1 ON
Table1.IDKode=Table2.Ejer

og fik en fejl, så det eneste jeg skulle var at fjerne Tabel1 efter FROM så
viker det. Jeg takker.

Er der ikke noget med at MySQL 3 ikke understøtter view.

/HK




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