Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Poster -> Kolumner

Postades av 2003-02-15 10:21:57 - Johan Djupmarker, i forum databaser, Tråden har 10 Kommentarer och lästs av 1047 personer

Kanske inte en bra rubrik, men jag ska försöka förklara vad jag vill göra...

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 :-)

/Johan


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-15 13:03:27 - Dan Claesson

Som du säger så är det inte snyggt, men följande SQL-fråga ger dig det resultat jag tror du eftersöker:

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.


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-15 14:03:37 - Johan Djupmarker

Nej, det ger mig varje produkt i var sin post, det ska vara i samma, ett exempel till:

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 :-)

/Johan


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-15 14:36:43 - Lars Berg

Hur definierar du vad som är de 4 första produkterna?


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.


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-15 14:46:36 - Johan Djupmarker

<b>Hur definierar du vad som är de 4 första produkterna?</b>

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....

/Johan


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-15 22:13:28 - Lars Berg

Så här kanske en vy som tar fram de fyra senaste per kund

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)


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-16 10:47:48 - Johan Djupmarker

Ahh, tack, det var ju också ett sätt, verkar lite smidigare iaf, ska testa det!

/Johan


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-17 10:45:50 - Emma Magnusson

Varför har du byggt tabellerna så? Kommer att gå snabbare om du strukturerar dem
"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).

/Emma


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-17 11:00:53 - Johan Djupmarker

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...

/Johan


Svara

Sv: Poster -> Kolumner

Postades av 2003-02-17 14:30:11 - Emma Magnusson

OK, framgick inte riktigt av din struktur. Finns så många som strukturerar det så som
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


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 809
27 960
271 761
680
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies