evilaidMedlem sedan apr. 2009431 inlägg
OKey.
så här är tanken att jag vill hämta rader från en tabell med ett visst villkor samtidigt som jag vill få med en summering från en annan tabell med villlkor från första tabellen.
så i princip är det följande två frågor jag vill slå ihop så jag får med summan för varje rad som hämtas.
Select ID,Name, Date from tbl_artikel where date < '2011-01-01' AND name= 'bosse'
Select Sum(amount),from tbl_lager where date < '2011-01-01' AND artid = tbl_artikel. id
KOllade på union men den verkar inte funkar, så det jag vill är att baka in andra frågan i den första om det går?
Mvh
ercizMedlem sedan maj 20011 880 inlägg
Du måste skriva om det till en enda fråga. Använd GROUP BY id och använd JOIN för att hämta data från två tabeller.
UNION använder man bara när du hämtar samma kolumner från olika frågor. Se http://www.w3schools.com/sql/sql_union.asp
evilaidMedlem sedan apr. 2009431 inlägg
men hur skriver man ihop frågor då? Alltså man ska kunna sätta ihop flera SELECT i en då va?
ercizMedlem sedan maj 20011 880 inlägg
Hur menar du med skriva ihop två frågor? Jag antar att du vill skriva EN men mer komplicerade fråga.
Kolla hur man JOINar tabeller på http://www.w3schools.com/sql/sql_join.asp
Och hur man grupperar med GROUP BY: http://www.w3schools.com/sql/sql_groupby.asp
evilaidMedlem sedan apr. 2009431 inlägg
Jo jag brukar använda Inner join m.m. men hur får jag den biten på den högra sidan att vara en summa till varje rad i den vänstra, alltså kodmässigt hur skulle det se ut?
Är väll dum men jag förstår det inte riktigt?
Hittade lite information om subquerys, verkar vara en smart grej? Ska testa lite
evilaidMedlem sedan apr. 2009431 inlägg
Nu har jag trasslat som F*n med subquerys men får det inte att fungera, hittade ett exempel på Microsoft msdn kör på deras exempel men får det inte att fungera..
gjorde det så enkelt som möjligt så här:
select md.id, md.order_id, md.article, (select i.art_id, SUM(amount) from pd_inventory as i WHERE i.art_id = md.article group by i.art_id) AS am from pd_mounting_details AS md
tabellerna ser ut som:
pd_mounting_details
id
order_id
article
pd_inventory
art_id
amount
så nu vill jag lista alla rader från pd_mounting_details samtidigt som jag vill få med en summa för varje rad som består av summan av alla rader i pd_inventory där art_id = article från pd_mounting_details?
fattar inte varför inte frågan fungerar, får inget vettigt felmeddelande heller?
aasahMedlem sedan mars 20033 451 inlägg
Den fråga du försöker använda har ingen FROM-klausul i den yttre frågan.
Du kan göra på två sätt:
1) Beräknar summan för varje unikt värde på de tre kolumnerna i MD nedan.
Slå ihop tabellerna, gruppera per all info om artikeln som du vill ta ut, räkna antal rader.
SELECT
MD.id,
MD.order_id,
MD.article,
SUM(I.Amount)
FROM
pd_mounting_details MD
INNER JOIN pd_inventory I ON MD.article = I.art_id -- Förutsatt att det är så de "sitter ihop".
GROUP BY
MD.id,
MD.order_id,
MD.article
2) Beräknar summan för varje I.art_id nedan.
Skiljer sig från 1) om något artikel id förekommer med flera olika värden på de övriga kolumnerna i MD.
SELECT
MD.id,
MD.order_id,
MD.article,
X.TotalSum
FROM
pd_mounting_details MD
INNER JOIN ( -- Beräknar summan/artikel
SELECT
art_id,
SUM(Amount) AS TotalSum
FROM
pd_inventory
GROUP BY
art_id
) X ON MD.article = X.art_id -- binder ihop värdet med övrig info om rätt artikel