Permalänk
Medlem

SQL query

Är inte särskilt bra på alla sorters JOIN vad det gäller SELECT-satser i SQL så jag använder mig titt som tätt av Access när jag behöver plocka ut saker ur mina databaser.

För tillfället håller jag på med ett boknings- och faktureringssystem och närmar mig äntligen slutet, however...

Jag vill ha data från tre tabeller, Kunder, Bokningar och Fakturor. Några fält från Kunder, några fält från Bokningar och ett fält från Fakturor (med mitt FakturaID).

Jag har en query som plockar ut exakt det jag vill ha förutom FakturaID:
(jag har redigerat bort några fält från SELECT-satsen i efterhand, så det inte blev så väldigt långa rader, därför ser det lite knas ut med min WHERE och ORDER BY)

SELECT Bokningar.BokningsID, Bokningar.KundID, Bokningar.Från, Bokningar.Till, Kunder.Kundnummer, Kunder.Kundnamn FROM Kunder INNER JOIN Bokningar ON Kunder.KundID = Bokningar.KundID WHERE (((Bokningar.Godkänd)=True) AND ((Bokningar.Fakturerad)=False) AND ((Bokningar.Betald)=False)) ORDER BY Kunder.Kundnamn, Bokningar.Datum;

Men när jag försöker koppla på tabellen Fakturor och vill visa FakturaID också så visas det för många poster! Jag behöver inte välja att visa FakturaID heller, det räcker att bara lägga till tabellen.

SELECT Bokningar.BokningsID, Bokningar.KundID, Bokningar.Från, Bokningar.Till, Kunder.Kundnummer, Kunder.Kundnamn, Fakturor.FakturaID FROM (Kunder INNER JOIN Bokningar ON Kunder.KundID = Bokningar.KundID) INNER JOIN Fakturor ON Kunder.KundID = Fakturor.KundID WHERE (((Bokningar.Godkänd)=True) AND ((Bokningar.Fakturerad)=False) AND ((Bokningar.Betald)=False)) ORDER BY Kunder.Kundnamn, Bokningar.Datum;

Vad är det jag och Access gör fel (i just den här frågan)?

Permalänk
Medlem
Skrivet av bjrkis:

...
Vad är det jag och Access gör fel (i just den här frågan)?

http://www.suspekt.biz/sql.png

Hej,
Välställd fråga med bra exempel, tack!
Vad jag kan se får du ut precis det du vill ha. Kolla närmre på resultatet: alla rader är unika. Du får inte ut några dubletter.

Problemet kommer sig av att du knyter samman Kunder- och Fakturor-tabellerna när du egentligen vill ha en faktura för varje bokning. Det logiska hade alltså varit en koppling mellan Bokningar och Fakturor. Vad jag kan se har inte tabellstrukturen stöd för detta idag.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Tack, det går alltid snabbare att få kloka svar om man ställer frågan ordentligt från början.

Det är också alltid lika roligt att bygga om databaser i slutskedet av större projekt!

Har gjort om relationerna:

Tabellen FakturorBokningar tog jag bort och flyttade kolumnen FakturaID till Bokningar istället. Bokningar är inte beroende av några andra tabeller och kommer inte ändras efter att den blivit fakturerad så att flytta den informationen till en tabell som inte går att ändra är ju bara totalt onödigt.

Jag är dock inte helt nöjd över relationen mellan Bokningar och Fakturor, men jag antar att det är så det måste vara eftersom min förra logik uppenbarligen inte fungerar. Det innebär ju dock att jag kan utesluta en tabell ur min usprungliga query.

Hoppas jag tänkt rätt nu så jag inte dyker på andra problem längre fram nu.

The old one: