/ 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
MySQL og Count
Fra : Harald


Dato : 13-03-05 02:44

Bruger MySQL

Har følgende tabeller:

tabel1
IDKode : integer
Navn : String

tabel2
Ejer : integer
Dato : Date

Ejer i tabel2 henviser til IDKode i tabel1, der kan således være flere
poster i tabel2 som er ejet af tabel1.

SELECT * FROM tabel2
LEFT JOIN tabel1 ON tabel2.ejer=tabel1.IDKode WHERE tabel2.Dato=en_dato

det virker fint, men jeg vil så gerne have en count af hvor mange poster af
tabel2 der hører til posten i tabel1

/HK



 
 
Jens Koldbæk (13-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 13-03-05 17:53

Du kan skrive det sådan:

SELECT COUNT(*) FROM tabel2
WHERE ejer =
(SELECT ejer FROM tabel2
LEFT JOIN tabel1 ON
tabel2.ejer=tabel1.IDKode WHERE
tabel2.Dato=en_dato)

Mvh
Jens


Harald <nomail@noname.dk> skrev:
>Bruger MySQL
>
>Har følgende tabeller:
>
>tabel1
>IDKode : integer
>Navn : String
>
>tabel2
>Ejer : integer
>Dato : Date
>
>Ejer i tabel2 henviser til IDKode i
>tabel1, der kan således være flere
>poster i tabel2 som er ejet af tabel1.
>
>SELECT * FROM tabel2
>LEFT JOIN tabel1 ON
>tabel2.ejer=tabel1.IDKode WHERE
>tabel2.Dato=en_dato
>
>det virker fint, men jeg vil så gerne
>have en count af hvor mange poster af
>tabel2 der hører til posten i tabel1
>
>/HK


Harald (13-03-2005)
Kommentar
Fra : Harald


Dato : 13-03-05 20:50

"Jens Koldbæk (slet AZTAI)" <koldbaek@AZTAImail.dk> skrev i en meddelelse
news:11107329560.663766443030458@dtext.news.tele.dk...
> Du kan skrive det sådan:
>
> SELECT COUNT(*) FROM tabel2
> WHERE ejer =
> (SELECT ejer FROM tabel2
> LEFT JOIN tabel1 ON
> tabel2.ejer=tabel1.IDKode WHERE
> tabel2.Dato=en_dato)

Jeg får en ERROR 1064 - error in your SQL syntax, har ikke lige kunne finde
ud af hvor i SQL´en.

Jeg bruger MySQL 4.0.17

/HK



Jens Koldbæk (14-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 14-03-05 10:03

Prøv dette:

SELECT COUNT(*) FROM tabel2 t2
WHERE t2.ejer =
(SELECT t22.ejer FROM tabel2 t22
LEFT JOIN tabel1 t1 ON
t22.ejer=t1.IDKode WHERE
t22.Dato=en_dato)

Mvh
Jens



Peter Brodersen (14-03-2005)
Kommentar
Fra : Peter Brodersen


Dato : 14-03-05 10:05

On 14 Mar 2005 09:03:20 GMT, Jens Koldbæk <koldbaek@N6W26mail.dk>
(slet N6W26) wrote:

>Prøv dette:

MySQL 4.0.17 understøtter ikke subqueries.

--
- Peter Brodersen

Harald (14-03-2005)
Kommentar
Fra : Harald


Dato : 14-03-05 10:13

"Peter Brodersen" <usenet2005@ter.dk> skrev i en meddelelse
news:d13k4n$80n$1@news.klen.dk...
> On 14 Mar 2005 09:03:20 GMT, Jens Koldbæk <koldbaek@N6W26mail.dk>
> (slet N6W26) wrote:
>
>>Prøv dette:
>
> MySQL 4.0.17 understøtter ikke subqueries.

Og jeg få også samme fejl (ERROR 1064)

/HK



Jens Koldbæk (14-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 14-03-05 10:25

Denne sql understøttes forhåbentligt:

SELECT COUNT(*)
FROM tabel2 t21,
tabel1 t1,
tabel2 t22
WHERE t21.Dato = en_dato
AND t1.IDKode = t21.ejer
AND t22.ejer = t1.IDKode

Mvh
Jens


Harald (14-03-2005)
Kommentar
Fra : Harald


Dato : 14-03-05 11:25

"Jens Koldbæk (slet GS0JN)" <koldbaek@GS0JNmail.dk> skrev i en meddelelse
news:11107924830.91565309843218@dtext.news.tele.dk...
> Denne sql understøttes forhåbentligt:
>
> SELECT COUNT(*)
> FROM tabel2 t21,
> tabel1 t1,
> tabel2 t22
> WHERE t21.Dato = en_dato
> AND t1.IDKode = t21.ejer
> AND t22.ejer = t1.IDKode

Den giver ikke en fejl, men jeg har vist ikke forklaret mig ordentlig så her
kommer det igen:

Bruger MySQL 4.0.17
Har følgende tabeller (forkortet):

kunder:
IDKode : integer
Navn : String

linier
Ejer : integer
Dato : Date
Tekst : string

Ejer i linier henviser til IDKode i kunder, der kan således være flere
poster i linier som er ejet af kunder.

SELECT * FROM linier
LEFT JOIN kunder ON linier.ejer=kunder.IDKode WHERE linier.Dato=en_dato

Hvis f.eks. en kunde har IDKode=10 og 2 poster i linier har Ejer=10 så giver
det mig 2 poster med alle felter fra både kunder og linier. Jeg vil fortsat
have alle felter i begge tabeller men ud over det vil jeg også have en Count
felt i hver post der fortæller hvor man linier hver kunde har.

/HK



Jens Koldbæk (14-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 14-03-05 11:43


SELECT t1.IDKode,
t1.Navn,
t21.Ejer,
t21.Dato,
t21.Tekst,
COUNT(t22.ejer)
FROM tabel2 t21,
tabel1 t1,
tabel2 t22
WHERE t21.Dato = en_dato
AND t1.IDKode = t21.ejer
AND t22.ejer = t1.IDKode
Group by t1.IDKode,t1.Navn,t21.Ejer,t21.Dato,t21.Tekst


Mvh
jens


Harald (14-03-2005)
Kommentar
Fra : Harald


Dato : 14-03-05 12:14

"Jens Koldbæk" <koldbaek@mail.dk> skrev i en meddelelse
news:11107971560.0086618679208712@dtext.news.tele.dk...
>
> SELECT t1.IDKode,
> t1.Navn,
> t21.Ejer,
> t21.Dato,
> t21.Tekst,
> COUNT(t22.ejer)
> FROM tabel2 t21,
> tabel1 t1,
> tabel2 t22
> WHERE t21.Dato = en_dato
> AND t1.IDKode = t21.ejer
> AND t22.ejer = t1.IDKode
> Group by t1.IDKode,t1.Navn,t21.Ejer,t21.Dato,t21.Tekst

Giver ingen fejl men det ser ud til at den Count jeg får er alle linier
tilhørende en kunde, dvs. at hvis jeg kører SQL´en med en_dato="20050313" og
kunden har 1 linie den dag men også 2 andre linier på andre datoer så bliver
count=3 og den burde kun være 1.

/HK



Jens Koldbæk (14-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 14-03-05 12:50

Harald <nomail@noname.dk> skrev:
> men ud over det vil jeg også have en Count
> felt i hver post der fortæller hvor man linier hver kunde har.

Du vil altså istedet have en count i hver post, der fortæller hvor
mange linier kunden har på den pågældende dato?

Så er det jo bare:

SELECT t1.IDKode,
t1.Navn,
t2.Ejer,
t2.Tekst,
COUNT(t2.Dato)
FROM tabel2 t2,
tabel1 t1
WHERE t2.Dato = en_dato
AND t1.IDKode = t2.ejer
Group by t1.IDKode,t1.Navn,t2.Ejer,t2.Tekst

Mvh
Jens


Harald (14-03-2005)
Kommentar
Fra : Harald


Dato : 14-03-05 13:12

"Jens Koldbæk (slet IGW86)" <koldbaek@IGW86mail.dk> skrev i en meddelelse
news:11108011560.440346000606485@dtext.news.tele.dk...
> Harald <nomail@noname.dk> skrev:
>> men ud over det vil jeg også have en Count
>> felt i hver post der fortæller hvor man linier hver kunde har.
>
> Du vil altså istedet have en count i hver post, der fortæller hvor
> mange linier kunden har på den pågældende dato?
>
> Så er det jo bare:
>
> SELECT t1.IDKode,
> t1.Navn,
> t2.Ejer,
> t2.Tekst,
> COUNT(t2.Dato)
> FROM tabel2 t2,
> tabel1 t1
> WHERE t2.Dato = en_dato
> AND t1.IDKode = t2.ejer
> Group by t1.IDKode,t1.Navn,t2.Ejer,t2.Tekst

Virker perfekt med count nu, men jeg får stadig kun en post for hver kunde
selvom kunden har flere linier på samme dato

/HK



Jens Koldbæk (14-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 14-03-05 13:25

Harald <nomail@noname.dk> skrev:
>Virker perfekt med count nu, men jeg
>får stadig kun en post for hver kunde
>selvom kunden har flere linier på samme dato
>

Øh? - I give it a final try:

SELECT t1.IDKode,
t1.Navn,
t21.Ejer,
t21.Dato,
t21.Tekst,
COUNT(t22.ejer)
FROM tabel2 t21,
tabel1 t1,
tabel2 t22
WHERE t21.Dato = en_dato
AND t1.IDKode = t21.ejer
AND t22.ejer = t1.IDKode
AND t22.Dato = t21.Dato
Group by t1.IDKode,t1.Navn,t21.Ejer,t21.Dato,t21.Tekst

Mvh
Jens


Harald (14-03-2005)
Kommentar
Fra : Harald


Dato : 14-03-05 14:08

"Jens Koldbæk" <koldbaek@mail.dk> skrev i en meddelelse
news:11108033060.273642963428141@dtext.news.tele.dk...
> Harald <nomail@noname.dk> skrev:
>>Virker perfekt med count nu, men jeg
>>får stadig kun en post for hver kunde
>>selvom kunden har flere linier på samme dato
>>
>
> Øh? - I give it a final try:
>
> SELECT t1.IDKode,
> t1.Navn,
> t21.Ejer,
> t21.Dato,
> t21.Tekst,
> COUNT(t22.ejer)
> FROM tabel2 t21,
> tabel1 t1,
> tabel2 t22
> WHERE t21.Dato = en_dato
> AND t1.IDKode = t21.ejer
> AND t22.ejer = t1.IDKode
> AND t22.Dato = t21.Dato
> Group by t1.IDKode,t1.Navn,t21.Ejer,t21.Dato,t21.Tekst

Nej får stadig kun een post selvom der er flere linier og nu giver count
også et for højt antal i nogle tilfælde. Nå det kan være jeg bliver nød til
at lave det manuelt men det havde jo været lettere at gøre det i en enkelt
SQL og hurtigere.

/HK



Jens Koldbæk (14-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 14-03-05 14:20

Ja, det er jo lige med at forstå hvad du vil have; prøv at fjerne
linien

"Group by ..."

Mvh
Jens


Harald (14-03-2005)
Kommentar
Fra : Harald


Dato : 14-03-05 15:50

"Jens Koldbæk" <koldbaek@mail.dk> skrev i en meddelelse
news:11108065710.165406228629895@dtext.news.tele.dk...
> Ja, det er jo lige med at forstå hvad du vil have; prøv at fjerne
> linien

Det giver fejlen: [root@localhost:3306] ERROR 1140: Mixing of GROUP columns
(MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no
GROUP BY clause

Her er så en forklaring med et data eks.

Igen mine tabeller i MySQL 4.0.17:
kunder:
IDKode : integer
Navn : String

linier
Ejer : integer
Dato : Date
Tekst : string

kunder indeholder så f.eks.:
IDKode, Navn
10, Hans
12, Peter
18, John
33, Hanne

linier indeholder så f.eks.:
Ejer, Dato, Tekst
10, 20050310, træsko
10, 20050312, cykel
10, 20050312, bus
10, 20050314, hund
12, 20050310, hus
12, 20050312, bil
18, 20050314, dør
33, 20050312, skærm
33, 20050312, mus
33, 20050312, cykel
33, 20050314, tastatur

SQL´en der køres med datoen=20050312 skal så retunerer følgende felter (ikke
nødvendigvis i nævnte rækkefølge)

IDKode, Navn, Ejer, Dato, Tekst, Count
10, Hans, 10, 20050312, cykel, 2
10, Hans, 10, 20050312, bus, 2
12, Peter, 12, 20050312, bil, 1
33, Hanne, 33, 20050312, skærm, 3
33, Hanne, 33, 20050312, mus, 3
33, Hanne, 33, 20050312, cykel, 3

Den SQL jeg bruger nu:
SELECT * FROM linier
LEFT JOIN kunder ON linier.ejer=kunder.IDKode WHERE linier.Dato="20050312"

vil give mig det resultat bortset fra feltet Count

/HK



Jens Koldbæk (14-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 14-03-05 22:58

OK, her har du den så:

SELECT t1.IDCode,
t1.navn,
t2.ejer,
t2.tekst,
t2.dato,
count(t3.dato)
FROM kunder t1,
linier t2,
linier t3
WHERE t2.dato = 'EN_DATO' -- konvertér venligst selv til en date:)
AND t1.IDCode = t2.ejer
AND t3.ejer = t2.ejer
AND t3.dato = t2.dato
group by t1.IDCode, t1.navn, t2.ejer, t2.tekst, t2.dato

Mvh
Jens


Harald (14-03-2005)
Kommentar
Fra : Harald


Dato : 14-03-05 23:53

"Jens Koldbæk (slet FTKSR)" <koldbaek@FTKSRmail.dk> skrev i en meddelelse
news:11108376820.582740649193202@dtext.news.tele.dk...
> OK, her har du den så:
>
> SELECT t1.IDCode,
> t1.navn,
> t2.ejer,
> t2.tekst,
> t2.dato,
> count(t3.dato)
> FROM kunder t1,
> linier t2,
> linier t3
> WHERE t2.dato = 'EN_DATO' -- konvertér venligst selv til en date:)
> AND t1.IDCode = t2.ejer
> AND t3.ejer = t2.ejer
> AND t3.dato = t2.dato
> group by t1.IDCode, t1.navn, t2.ejer, t2.tekst, t2.dato

Næ det virker stadig ikke, count er helt forkert ved nogle poster og ved
nogle poster er count forskellig selv om kunder er den samme. Og hvis jeg
f.eks. helt fjerner linier.tekst feltet fra hele sql sætningen så får jeg et
helt andet resultat, og hvad har tekst feltet overhoved med resultatet at
gøre.
Det er som om at resultatet er afhængig af hvad linier.tekst indeholder for
hvis jeg retter på tekst feltet i en post så ændre resultatet sig.

/HK



Jens Koldbæk (15-03-2005)
Kommentar
Fra : Jens Koldbæk


Dato : 15-03-05 01:05

>Næ det virker stadig ikke, count er
>helt forkert ved nogle poster og ved
>nogle poster er count forskellig selv
>om kunder er den samme. Og hvis jeg
>f.eks. helt fjerner linier.tekst
>feltet fra hele sql sætningen så får jeg et
>helt andet resultat, og hvad har tekst
>feltet overhoved med resultatet at
>gøre.
>Det er som om at resultatet er
>afhængig af hvad linier.tekst
>indeholder for
>hvis jeg retter på tekst feltet i en
>post så ændre resultatet sig.
>

OK - så er der et andet indhold i dine tabeller end i din
beskrivelse fra tidligere:

> kunder indeholder så f.eks.:
> IDKode, Navn
> 10, Hans
> 12, Peter
> 18, John
> 33, Hanne
>
> linier indeholder så f.eks.:
> Ejer, Dato, Tekst
> 10, 20050310, træsko
> 10, 20050312, cykel
> 10, 20050312, bus
> 10, 20050314, hund
> 12, 20050310, hus
> 12, 20050312, bil
> 18, 20050314, dør
> 33, 20050312, skærm
> 33, 20050312, mus
> 33, 20050312, cykel
> 33, 20050314, tastatur

for min select:

SELECT t1.IDCode,
t1.navn,
t2.ejer,
t2.tekst,
t2.dato,
count(t3.dato)
FROM kunder t1,
linier t2,
linier t3
WHERE t2.dato = ´20050312´ -- konvertér venligst selv
AND t1.IDCode = t2.ejer
AND t3.ejer = t2.ejer
AND t3.dato = t2.dato
group by t1.IDCode, t1.navn, t2.ejer, t2.tekst, t2.dato

giver netop hvad du ønskede - ud fra de data du beskrev, nemlig:

IDKode, Navn, Ejer, Dato, Tekst, Count
10, Hans, 10, 20050312, cykel, 2
10, Hans, 10, 20050312, bus, 2
12, Peter, 12, 20050312, bil, 1
33, Hanne, 33, 20050312, skærm, 3
33, Hanne, 33, 20050312, mus, 3
33, Hanne, 33, 20050312, cykel, 3

> og hvad har tekstfeltet overhovedet med resultatet at gøre

Ja selvfølgelig, hvis du vil have "tekst"-feltet med i selecten,
som du optæller forekomsterne på, så bliver antallet af poster
hvor tekstfeltet er ens naturligvis optalt!!!!

Hvis du ikke vil optælle antallet af poster hvor tekstfeltet er
ens skal du naturligvis ikke medtage dette felt.








Kristian Damm Jensen (13-03-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 13-03-05 22:19


Harald wrote:
> Bruger MySQL
>
> Har følgende tabeller:
>
> tabel1
> IDKode : integer
> Navn : String
>
> tabel2
> Ejer : integer
> Dato : Date
>
> Ejer i tabel2 henviser til IDKode i tabel1, der kan således være
flere
> poster i tabel2 som er ejet af tabel1.
>
> SELECT * FROM tabel2
> LEFT JOIN tabel1 ON tabel2.ejer=tabel1.IDKode WHERE
tabel2.Dato=en_dato
>
> det virker fint, men jeg vil så gerne have en count af hvor mange
poster af
> tabel2 der hører til posten i tabel1


Prøv med

select tabel1.IDKode, count(tabel1.ejer)
from tabel1
left join tabel2
on tabel1.IDKode = tabel2.ejer
group by tabel1.IDKode

(Hvor svært kan det være )

VH
Kristian


Harald (13-03-2005)
Kommentar
Fra : Harald


Dato : 13-03-05 22:34

"Kristian Damm Jensen" <kristiandamm@gmail.com> skrev i en meddelelse
news:1110748729.315310.284890@l41g2000cwc.googlegroups.com...

Harald wrote:
>> Bruger MySQL
>
> Har følgende tabeller:
>
> tabel1
> IDKode : integer
> Navn : String
>
> tabel2
> Ejer : integer
> Dato : Date
>
> Ejer i tabel2 henviser til IDKode i tabel1, der kan således være
flere
> poster i tabel2 som er ejet af tabel1.
>
> SELECT * FROM tabel2
> LEFT JOIN tabel1 ON tabel2.ejer=tabel1.IDKode WHERE
tabel2.Dato=en_dato
>
> det virker fint, men jeg vil så gerne have en count af hvor mange
poster af
> tabel2 der hører til posten i tabel1


>Prøv med

>select tabel1.IDKode, count(tabel2.ejer)
>from tabel1
>left join tabel2
> on tabel1.IDKode = tabel2.ejer
>group by tabel1.IDKode

Det virker næsten, hvis f.eks. der er 3 poster i tabel2 som hører til en
bestemt post i tabel1 så skulle jeg gerne få 3 poster ud hvor count så er
sat til 3 i hver post. Med dit forslag får jeg kun en post tilbage.

/HK



Kristian Damm Jensen (14-03-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 14-03-05 07:34


Harald wrote:
> "Kristian Damm Jensen" <kristiandamm@gmail.com> skrev i en meddelelse

> news:1110748729.315310.284890@l41g2000cwc.googlegroups.com...
>
> Harald wrote:
> >> Bruger MySQL
> >
> > Har følgende tabeller:
> >
> > tabel1
> > IDKode : integer
> > Navn : String
> >
> > tabel2
> > Ejer : integer
> > Dato : Date
> >
> > Ejer i tabel2 henviser til IDKode i tabel1, der kan således være
> flere
> > poster i tabel2 som er ejet af tabel1.
> >
> > SELECT * FROM tabel2
> > LEFT JOIN tabel1 ON tabel2.ejer=tabel1.IDKode WHERE
> tabel2.Dato=en_dato
> >
> > det virker fint, men jeg vil så gerne have en count af hvor mange
> poster af
> > tabel2 der hører til posten i tabel1
>
>
> >Prøv med
>
> >select tabel1.IDKode, count(tabel2.ejer)
> >from tabel1
> >left join tabel2
> > on tabel1.IDKode = tabel2.ejer
> >group by tabel1.IDKode
>
> Det virker næsten, hvis f.eks. der er 3 poster i tabel2 som hører
til en
> bestemt post i tabel1 så skulle jeg gerne få 3 poster ud hvor count
så er
> sat til 3 i hver post. Med dit forslag får jeg kun en post tilbage.

Det lyder som om MySQL laver en count(distinct tabel2.ejer) from for en
count(tabel2.ejer). Det er i så fald en fejl i MySQL.

Prøv at bruge count(distinct tabel2.dato) i stedet.

Kristian


Harald (14-03-2005)
Kommentar
Fra : Harald


Dato : 14-03-05 09:47

"Kristian Damm Jensen" <kristiandamm@gmail.com> skrev i en meddelelse
news:1110782028.577245.18890@l41g2000cwc.googlegroups.com...
Harald wrote:
> "Kristian Damm Jensen" <kristiandamm@gmail.com> skrev i en meddelelse

> news:1110748729.315310.284890@l41g2000cwc.googlegroups.com...
>
> Harald wrote:
> >> Bruger MySQL
> >
> > Har følgende tabeller:
> >
> > tabel1
> > IDKode : integer
> > Navn : String
> >
> > tabel2
> > Ejer : integer
> > Dato : Date
> >
> > Ejer i tabel2 henviser til IDKode i tabel1, der kan således være
> flere
> > poster i tabel2 som er ejet af tabel1.
> >
> > SELECT * FROM tabel2
> > LEFT JOIN tabel1 ON tabel2.ejer=tabel1.IDKode WHERE
> tabel2.Dato=en_dato
> >
> > det virker fint, men jeg vil så gerne have en count af hvor mange
> poster af
> > tabel2 der hører til posten i tabel1
>
>
> >Prøv med
>
> >select tabel1.IDKode, count(tabel2.ejer)
> >from tabel1
> >left join tabel2
> > on tabel1.IDKode = tabel2.ejer
> >group by tabel1.IDKode
>
> Det virker næsten, hvis f.eks. der er 3 poster i tabel2 som hører
til en
> bestemt post i tabel1 så skulle jeg gerne få 3 poster ud hvor count
så er
> sat til 3 i hver post. Med dit forslag får jeg kun en post tilbage.

>Det lyder som om MySQL laver en count(distinct tabel2.ejer) from for en
>count(tabel2.ejer). Det er i så fald en fejl i MySQL.
>Prøv at bruge count(distinct tabel2.dato) i stedet.

Jeg får stadig kun 1 post tilbage selv om der er flere i tabel2, men nu er
count 1 uanset hvad.

/HK





Peter Brodersen (14-03-2005)
Kommentar
Fra : Peter Brodersen


Dato : 14-03-05 10:06

On 13 Mar 2005 22:33:48 -0800, "Kristian Damm Jensen"
<kristiandamm@gmail.com> wrote:

>Det lyder som om MySQL laver en count(distinct tabel2.ejer) from for en
>count(tabel2.ejer). Det er i så fald en fejl i MySQL.

MySQL differencierer nu på COUNT(felt) og COUNT(DISTINCT felt).

--
- Peter Brodersen

Kristian Damm Jensen (15-03-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 15-03-05 12:22


Harald wrote:

<snip>

> SQL´en der køres med datoen=20050312 skal så retunerer følgende
felter (ikke
> nødvendigvis i nævnte rækkefølge)
>
> IDKode, Navn, Ejer, Dato, Tekst, Count
> 10, Hans, 10, 20050312, cykel, 2
> 10, Hans, 10, 20050312, bus, 2
> 12, Peter, 12, 20050312, bil, 1
> 33, Hanne, 33, 20050312, skærm, 3
> 33, Hanne, 33, 20050312, mus, 3
> 33, Hanne, 33, 20050312, cykel, 3

Du vil altså i hver linie have det samlede antal poster for den
pågældende kunde. Hvis Hanne havde en post mere i linie skulle der
således returneres

33, Hanne, 33, 20050312, skærm, 4
33, Hanne, 33, 20050312, mus, 4
33, Hanne, 33, 20050312, cykel, 4
33, Hanne, 33, 20050312, buskort, 4

Er det korrekt opfattet?

Det kan i princippet godt lade sig gøre, men det er at blande pærer
og bananer sammen. Informationen om at Hanne har fire forekomster er
ikke relateret til den enkelte post i udtrækket, men hænger sammen
med alle de andre poster.

Jeg ville foreslå, at du i stedet laver to udtræk: Et der fortæller,
hvor mange poster hver enkelt har, og et der giver dig indholdet i de
pågældende poster.

VH
Kristian


Harald (15-03-2005)
Kommentar
Fra : Harald


Dato : 15-03-05 16:44

"Kristian Damm Jensen" <kristiandamm@gmail.com> skrev i en meddelelse
news:1110885717.481250.42560@o13g2000cwo.googlegroups.com...

Harald wrote:
<snip>

> SQL´en der køres med datoen=20050312 skal så retunerer følgende
felter (ikke
> nødvendigvis i nævnte rækkefølge)
>
> IDKode, Navn, Ejer, Dato, Tekst, Count
> 10, Hans, 10, 20050312, cykel, 2
> 10, Hans, 10, 20050312, bus, 2
> 12, Peter, 12, 20050312, bil, 1
> 33, Hanne, 33, 20050312, skærm, 3
> 33, Hanne, 33, 20050312, mus, 3
> 33, Hanne, 33, 20050312, cykel, 3

Du vil altså i hver linie have det samlede antal poster for den
pågældende kunde. Hvis Hanne havde en post mere i linie skulle der
således returneres

33, Hanne, 33, 20050312, skærm, 4
33, Hanne, 33, 20050312, mus, 4
33, Hanne, 33, 20050312, cykel, 4
33, Hanne, 33, 20050312, buskort, 4

Er det korrekt opfattet?

Det kan i princippet godt lade sig gøre, men det er at blande pærer
og bananer sammen. Informationen om at Hanne har fire forekomster er
ikke relateret til den enkelte post i udtrækket, men hænger sammen
med alle de andre poster.

Jeg ville foreslå, at du i stedet laver to udtræk: Et der fortæller,
hvor mange poster hver enkelt har, og et der giver dig indholdet i de
pågældende poster.

-------------------------------------------------------------------------------

Hvorfor f.. vil min OE ikke sætte > foran nogen indlæg.
Nå men til dit 1. spørgsmål så ja det er korrekt opfattet.
Jeg syntes ikke det er at blande noget sammen da oplysningen om hvor mange
linier den enkelte kunde har, er noget jeg skal bruge og det ville være
smart hvis det kunne lade sig gøre i en enkelt sql. Løsningen som Jens
Koldbæk er kommet med virker ganske fint i nogle tilfælde men der er flere
ting i mine tabeller der skal tages højde for og så virker løsningen ikke.
De 2 tabeller som jeg nævnte var bare eksempler som mindede om mine faktiske
tabeller da jeg ikke troede de ekstra faktorer der skulle tages højde for
ville have betydning for hvordan sql sætningen skulle se ud (min fejl).
Men løsningen bliver at jeg laver 2 simple (som jeg kan finde ud af) sql´er
og så rent programmerings mæssig får dem sat sammen og når jeg så får tid
går jeg i gang med at lære lidt mere om sql.

Tak for hjælpen.

/HK



Kristian Damm Jensen (16-03-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 16-03-05 10:45

Harald wrote:

<snip>

> Nå men til dit 1. spørgsmål så ja det er korrekt opfattet.
> Jeg syntes ikke det er at blande noget sammen da oplysningen om hvor
mange
> linier den enkelte kunde har, er noget jeg skal bruge og det ville
være
> smart hvis det kunne lade sig gøre i en enkelt sql.

At du skal bruge oplysningen om antal linier ændrer ikke ved at det er
at blande tingene sammen, når du forlanger at få den i sammen med de
enkelte linier.

Du forsøger ganske enkelt at gøre vold på den relationelle
tankegang; når man gør det løber man altid en stor risiko for at
løbe sig nogle staver i livet.

> Løsningen som Jens
> Koldbæk er kommet med virker ganske fint i nogle tilfælde men der
er flere
> ting i mine tabeller der skal tages højde for og så virker
løsningen ikke.

Jens Koldbæks indlæg dukker ikke op på Google - formodentlig
benytter han X-no-archive - så jeg er ude af stand til at kommentere
dem.

> De 2 tabeller som jeg nævnte var bare eksempler som mindede om mine
faktiske
> tabeller da jeg ikke troede de ekstra faktorer der skulle tages
højde for
> ville have betydning for hvordan sql sætningen skulle se ud (min
fejl).
> Men løsningen bliver at jeg laver 2 simple (som jeg kan finde ud af)
sql´er
> og så rent programmerings mæssig får dem sat sammen og når jeg
så får tid
> går jeg i gang med at lære lidt mere om sql.

Det vil sikkert være en god idé, hvis du skal bruge det mere. Held og
lykke.

Kristian


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste