webForumDet fria alternativet

Join på samma tabell

Databaser & SQLur Databashanterare & SQL

7 svar · 326 visningar · startad av lolukokasos

Medlem sedan mars 2001196 inlägg
Frågan#1

Hej, mina sql-kunskaper tog slut... :q

Har två tabeller, Beställning och Maskin. På en beställning har jag egenskaper som Underartikel, Huvudartikel och Artikellänk.

På en maskin har jag beställningar som är huvudartikel och på andra maskiner har jag beställningar som är underartikel med artikellänk till huvudartikeln.

Hur ställer jag en sql så att resultatet blir:
#Huvudartikel 1
##Underartikel 1 till huvudart1
##Underartikel 2 till huvudart1
#Huvudartikel 2
##Underartikel 1 till huvudart2
etc...

Tacksam för svar!

Oops, glömde säga: SQL-server - Asp

Medlem sedan dec. 200012 464 inlägg
#2

Vilka kolumner finns i tabellerna?

Medlem sedan juni 200032 969 inlägg
#3

typ:

select m.artikelnamn as huvudartikel, m.artikellänk, 
    m2.artikelnamn as underartikel
from beställningar b
    inner join maskiner m
       on b.huvudartikel = m.artikelnummer
    left join maskiner m2 
       on b.underartikel = m2.artikelnummer
where b.ordernummer = 4711
order by huvudartikel, underartikel

(utan att veta vad dina kolumner heter, så det är bara en gissning...)

Medlem sedan mars 2001196 inlägg
#4

Ett urval av tabeller och kolumnnamn. Tabell maskin är endast där för att får fram info om maskinen.

Tabell Bestallning
-idnummer
-artnr
-maskinnummer
-huvudArt
-underArt
-artLank (idnummer till huvudartikel)

Maskin
-maskinnummer
-info

Jag vet alltså inte vad några ordernummer är utan den enda inputen jag har är ett maskinnummer.

Medlem sedan juni 200032 969 inlägg
#5

Då borde du kunna ta hjälp av mitt exempel ovan, och modifiera för att få det som du vill. :)

Medlem sedan mars 2001196 inlägg
#6

@nders, jag är troligtvis inte väluppfostrad men jag vet att om man inte är snäll på fredag så får man inget lördagsgodis. Känner inte du igen det? ;-)

Nä, jag inser inte hur den satsen du ger exempel på ska kunna ge svar som jag önskar. Du får väl dubletter på de "olika" artikelnumrerna? Helst vill jag ha en sql-sats som ger mig mindre logik i asp...

PS. UnderArt och HuvudArt är av typ bit...

Medlem sedan juni 200032 969 inlägg
#7

PS. UnderArt och HuvudArt är av typ bit...

Du får väl kläcka ur dig redan från början hur allt hänger ihop, så man slipper skriva en massa skräp i onödan. :)

Eftersom, som du säger, det är fredag, så är hjärnan slö, och jag är inte helt säker på vad du är ute efter. Vill du alltså ha alla beställningar där en viss pryttel finns med antingen som huvud- eller underartikel? Försök gärna beskriva exakt vad du vill ha. Exemplifiera tabellinnehåll och exakt vad du vill ha ut.

Medlem sedan mars 2001196 inlägg
#8

@nders, "skit in skit ut" brukar det väl heta när man tror att man kan gena något i föklaringar. Jag gör ett nytt försök för att jag skäms:

Tabell Bestallning
-idnummer
-artnr
-maskinnummer
-huvudArt (bit)
-underArt (bit)
-artLank (idnummer till huvudartikel)

Maskin
-maskinnummer
-info

En beställning görs på maskin 91 som sätts som huvudartikel. Två beställningar görs på maskin 6 som är underartiklar till 91.
Nya beställningar görs som ovan fast där endast en underartikel läggs på maskin 62

Följande data i tabell Bestallning skulle kunna se ut så här:
#idnummer | #artnr | #maskinnummer | #huvudart | #underArt | #artLank
#4991 | #'1234' | #91 | #1 | #0 | #''
#5010 | #'654A' | #6 | #0 | #1 | #'4991'
#5012 | #'321B' | #6 | #0 | #1 | #'4991'
#4993 | #'4567' | #91 | #1 | #0 | #''
#5015 | #'555A' | #62 | #0 | #1 | #'4993'

Sql-satsen bör ge resultat i form där varje rad har unika artnr som ovan.

@nders, det exemplet du gav ovan kan funka men jag får då endast 3 rader i resultatet och då blir det dubbletter på huvudartikelnumret (alltså inte bara skräpkod)...

137 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)