Kanske inte en bra rubrik, men jag ska försöka förklara vad jag vill göra... Som du säger så är det inte snyggt, men följande SQL-fråga ger dig det resultat jag tror du eftersöker: Nej, det ger mig varje produkt i var sin post, det ska vara i samma, ett exempel till: Hur definierar du vad som är de 4 första produkterna? <b>Hur definierar du vad som är de 4 första produkterna?</b> Så här kanske en vy som tar fram de fyra senaste per kund Ahh, tack, det var ju också ett sätt, verkar lite smidigare iaf, ska testa det! Varför har du byggt tabellerna så? Kommer att gå snabbare om du strukturerar dem Nu är det så jag har gjort (fast jag skrev inte ut din tblProdukt), fast det är inte det som är problemet. Jag vill alltså kunna presentera flera produkter (din tblKundKöptProdukt) "på bredden", alltså en kolumn var för de 4 första produkterna... OK, framgick inte riktigt av din struktur. Finns så många som strukturerar det så som Poster -> Kolumner
Jag har två tabeller, vi kan kalla dom Kunder och Produkter.
Kunder:
KundID
Namn
Produkter:
KundID
ProduktID
Antal
Det kan givetvis finnas hur många produkter som helst. Nu ska jag göra en SELECT-sats som plockar ut de 4 första produkterna för varje kund och visar det som en post, ex:
Olle potatis 4 filmjölk 2 mjölk 3 ost 1
Jag har en lösning på detta, men den är inte snygg (kan presentera den sedan), men är intresserad av om någon kan hitta något bättre sätt. Jag vet att detta inte är ett bra sätt att redovisa informationen, men det är ett krav att kunna visa en sådan rapport, och vad gör man inte...? :-)
Det ska fungera i Access SQL. Prestanda är inte jätteviktigt då det rör sig om små klientdatabaser i Access, men det skulle vara kul att se om det går att göra lite bättre än så jag har gjort nu :-)
/JohanSv: Poster -> Kolumner
SELECT kunder.Namn, produkter.namnt,produkter.antal
FROM produkter INNER JOIN kunder ON produkter.Kundid = kunder.Kundid
where produkter.prodid in (select top 4 prodid from produkter where kundid = kunder.kundid);
Du kanske vill lägga till en order by i sub-selecten också för att kunna bestämma vilka 4 det är du får.Sv: Poster -> Kolumner
Post 1: Olle potatis 4 filmjölk 2 mjölk 3 ost 1
Post 2: Kalle Kaffe 2 Bröd 2
Post 3: Pelle mjölk 2 flingor 3 mjöl 1
Nu är det inte mat jag ska lista, men det är denna principen :-)
/JohanSv: Poster -> Kolumner
Jag vet inte om det går att använda transform på något sätt annars
så är flera self-join eller sub-slect i select-listan möjliga lösningar.Sv: Poster -> Kolumner
Ska vara i datumordning.
<B>Jag vet inte om det går att använda transform på något sätt</b>
Vad jag känner till måste man ha något som talar om i vilken kolumn posten ska hamna för att man ska kunna använda transform och det har jag inte.
<b>annars så är flera self-join</b>
Skulle du kunna utveckla detta lite?
<b>eller sub-slect i select-listan möjliga lösningar.</b>
Mm, så har jag gjort nu, subselects med TOP typ:
SELECT TOP 1 ... WHERE NOT IN (SELECT TOP 2 ...)
För att få tredje posten, men det går seeeegt....
/JohanSv: Poster -> Kolumner
create view v as
select * from (
select (select count(*) from produkt where datum >= p.datum and kundid = p.kund )
as rank,
p.* from produkt p) dt
where dt.rank <= 4;
select k.kundid, v1.produkt, v1.antal, v2.produkt, v2.antal,
v3.produkt,v3.antal, v4.produkt, v4.antal
from (((kunder k left outer join v as v1 on (k.kundid = v1.kundid and v1.rank = 1))
left outer join v as v2 on (k.kundid = v2.kundid and v2.rank = 2))
left outer join v as v3 on (k.kundid = v3.kundid and v3.rank = 3))
left outer join v as v4 on (k.kundid = v4.kundid and v4.rank = 4)Sv: Poster -> Kolumner
/JohanSv: Poster -> Kolumner
"korrekt"
tblKund
kundID
kundnamn
...
..
tblProdukt
prodID
prodnamn
prodPris
tblKundKöptProdukt
kundID
prodID
antal
datum
På så sätt kan du enkelt bygga ut tabellerna om du vill kunna hantera beställningar
(bara att lägga till en ny tabell tblKundBeställtProdukt).
/EmmaSv: Poster -> Kolumner
/JohanSv: Poster -> Kolumner
jag trodde du hade gjort... Ber om ursäkt... =)
Verkar ha kommit en hel del bra förslag på lösning av det ursprungliga problemet.
Sitter inte vid någon utveckligsmiljö för tillfället så kan tyvärr inte hjälpa till med den
biten nu...
/Emma