sql sats
Jag sitter och funderar på hur man på bästa sätt kan hämta ut data ur 2 tabeller. Saken är den att data ur en av tabellerna skall läggas upp som nya kolumner alltså. Mina tabeller kan se ut såhär.
Ansvarig
AnsvarigID
Namn
...
...
Kund
KundID
Namn
AnsvarigID
...
Jag vill att resultatet av min sql sats skall se ut följande,
En ansvarig skall skrivas ut sedan skall alla kunder listas som nya kolumner
Alltså får varje kund som den Ansvariga äger skall dyka upp efter Ansvarig.Namn.
Ansvarig.Namn | Kund.Namn | Kund.Namn | Kund.Namn | ....
--------------------------------------------------------------------------------
Svara
Sv: sql sats
Om det är SQL Server 2005, kolla efter PIVOT i hjälpen. Använder du Access(antingen som DB eller klient) kan du kika på Crosstab query.
Svara
Sv: sql sats
"Går inte". Om du vet ett maximalt antal kunder, så kan du eventuellt tråckla ihop en sql-sats med hjälp av en sortering på något vis.
Du kan ju då också ta reda på maximalt antal kunder och bygga upp sql-satsen med kod. Inte direkt vackert.
En annan, trevligare lösning, är väl helt enkelt att göra en vanlig join eller använda lite subselects etc. och sen sköta själva uppsorteringen vid presentationen.
EDIT: Om man inte använder DB-specifika lösningar då förstås.
Svara
Sv:sql sats
Jag har letat lite på nätet och det pekar också på att ni har rätt att det inte går med vanlig sql som min lösning tyvärr kräver.
Jag vet faktiskt antalet kunder så det får väl antagligen bli att bygga en stor sqlsats vilkets jag hade hoppats slippa.
Tack för hjälpen ändå.
Svara
Sv: sql sats
Varför måste du göra transformeringen i SQL satsen?
Kan du inte göra det efter du hämtat data?
Svara
Sv:sql sats
Exakt, gör det vid presentationen, som jag skrev ovan. Du ska väl knappast använda resultattabellen efter det ändå?
Svara
Sv: sql sats
Tyvärr så går det inte att göra vid presentationen då det är ett dynamiskt formulär som bara skall visa resultat i en gridview...... det är extremt generellt så går inte.
Men eftersom jag vet hur många kunder som tillhör den ansvariga så kanske jag kan lista ut det.
Svara
Sv:sql sats
Är det en gridview i .NET, vb& eller vad?
Det kanske finnas någon smidig lösning.
T.ex. Kan du skapa Disconected recordsets med ADO med vilket du kan fylla informationen så du vill ha den. För att sedan binda den mot kontroller.
Svara
Sv:sql sats
Vad då går inte vid presentationen? Har ni bara SQL och UI? Inget skikt därimellan?
Detta är en form av pivotering som du kan göra i t.ex. T-SQL 2005 men inte i standard SQL.
I dotnet kan du hämta dina två resultat, sen bygger du upp ett Dataset/en DataTable dynamiskt med den struktur du behöver. Då kan du skapa kolumner dynamiskt.
Svara
Sv: sql sats
Funktionalitetn är byggd sådan att det skall vara ett enkelt verktyg att få ut generella rapporter.
De rapporter som går att få ut är från en sql sats som är lagd i en databas som en vanlig post därför kan jag inget göra på program sidan utan att bara fylla gridden med datan som kommer från databasen.
Svara
Sv: sql sats
Om du kan tänka dig få data på formen
| Ansvarig | Kund1, Kund2, Kund3, ... , Kundn
alltså två kolumner, en med ansvarig och en som innehåller kommaseparerad (eller semikolonseparerad) data, skulle jag kika på funktionen COALESCE.
Mer info här:
http://sqljunkies.com/WebLog/donkiely/archive/2006/01/29/17922.aspx
//Lars
Svara