Hej ! <code> Hej Lars ! Jo, det finns flera sätt Ingen av metoderna är bra om man vill få med personer som inte har några orders. Då kan man t.ex. göra en left join mellan kundtabellen och mängden som returneras av ovanstående select-satser. <citata>SQL-Fråga...
Någon som vet hur man går tillväga för att ta reda på hur många order en eller flera kunder har lagt under en viss tid.
Följande tabeller finns.
KUND
Personnummer (PK)
namn
....
ORDER
Ordernummer (PK)
Personnummer (FK)
datum
...
FAKTURA
Fakturanummer (PK)
Personnummer (FK)
datum
...
När en order är fakturerad så flyttas den från tabellen ORDER till Faktura.
Jag vill alltså få fram antal order och fakturor på en viss kund, eller på flera kunder under en viss tid.
t.ex.
Kund antal
kalle 5
pelle 7
...
mvh
/RickySv: SQL-Fråga...
select personnummer,namn,
(select count(*)
from "ORDER"
where personnummer = k.personnummer
and datum between <startDate> and <endDate>) +
(select count(*)
from FAKTURA
where personnummer = k.personnummer
and datum between <startDate> and <endDate>) as antal
from KUND as K
where personummer in <personnummerLista>
</code>
Order är inte så bra namn på en tabell.Sv: SQL-Fråga...
Jag ska testa det där hemma ikväll.
Kan man inte göra en UNION ALL på ORDER och FAKTURA och sen gör någon typ av count()?
typ....
select * from ORDER
union all
select * from FAKTURA
....nu har man ju en tabell med alla Orders och all fakturor.
Och nu gör en matchning mot tabellen KUND.
mvh
/RickySv: SQL-Fråga...
<code>
select personnummer,namn,count(*) from
(select personnummer,namn
from "ORDER"
where datum between <startDate> and <endDate>
union all
select personnummer,namn
from FAKTURA
where datum between <startDate> and <endDate>) as dt
where personummer in <personnummerLista>
group by personnummer,namn
</code>Sv: SQL-Fråga...
/PelleSv: SQL-Fråga...
Ingen av metoderna är bra om man vill få med personer som inte har några orders.
</citat>
Det är sant för den andra frågan men inte den första.