tblOrdreAdresse.fldType er af datatypen integer (ændrer det til bit senere) og bliver enten tildelt værdien 1 eller 2. Det er alt efter hvilken type adressen er og der vil kun være en af hver slags i databasen til hver ordre. Dette er på grund af, at man kan vælge både at oplyse en faktureringsadresse og en modtageradresse.
Tabellen tblOrdreAdresse indeholder adresserne tilknyttet til de ordre jeg har gemt i tblOrdrer. Selve varerne som er købt, er ikke nødvendig i dette tilfælde og er gemt i en tredje tabel.
Godt.. Det jeg prøver, er at trække indholdet ud fra tblOrdrer og tblOrdrerAdresser som begge har samme ordre-id. Jeg har forsøgt mig, hvor jeg har nøjes med leveringsdatoen(tblOrdrer.fldDatoLevering) og navnet(tblOrdreAdresse.fldNavn). Problemet er bare, at hvis jeg gør som nedenfor, får jeg naturligvis to rækker skrevet ud. En række for tblOrdreAdresse.fldType=1 og en for tblOrdreAdresse.fldType=2:
SELECT tblOrdrer.fldId, tblOrdrer.fldDatoLevering, tblOrdreAdresse.fldNavn AS fldFakNavn FROM tblOrdrer, tblOrdreAdresse WHERE tblOrdrer.fldId = 166 AND tblOrdrer.fldId = tblOrdreAdresse.fldOrdreId
Hvad jeg essentielt gerne vil ende ud med er følgende:
[tabel] - tabel.fldId tabel.fldDatoLevering tabel.fldFakNavn tabel.fldFak... alle andre adressefelter i adresse-tabellen med fldType=1 tabel.fldModNavn tabel.fldMod... alle andre adressefelter i adresse-tabellen med fldType=2
SELECT tblOrdrer.fldId, tblOrdrer.fldDatoLevering, tblOrdreAdresse.fldNavn AS fldFakNavn FROM tblOrdrer JOIN tblOrdreAddresse ON tblOrdrer.fldId = tblOrdreAdresse.fldOrdreId WHERE tblOrdrer.fldId = 166;
Ikke helt. Det er ca. samme slutresultat, som det jeg er kommet frem til, genererer.
Hvis jeg nu har to adresser tilknyttet til en ordre, den ene med fldType sat til 1 og den anden med fldType sat til 2, så kommer de frem som to rækker.
Jeg kan lige prøve at illustrere det grafisk:
Jeg har følgende nu:
------------------------------------------------------------------ | fldId | fldDatoLevering | fldFakNavn | |----------------------------------------------------------------- | 166 | 2011-24-04 00:00:00.000 | Mit Fornavn 1 | <- Række hvor fldType=1 | 166 | 2011-24-04 00:00:00.000 | Mit Fornavn 2 | <- Række hvor fldType=2 ------------------------------------------------------------------
select top 1 * from ( SELECT tblOrdrer.fldId, tblOrdrer.fldDatoLevering, tblOrdreAdresse.fldNavn AS fldFakNavn FROM tblOrdrer, tblOrdreAdresse WHERE tblOrdrer.fldId = 166 AND tblOrdrer.fldId = tblOrdreAdresse.fldOrdreId ) as t
tblAdresse skal joines to gange, en gang hvor type = 1 og en gang hvor type = 2. Proev denne:
SELECT o.fldId, o.fldDatoLevering, a1.fldNavn fldFakNavn, a2.fldNavn fldModNavn FROM tblOrdrer o LEFT JOIN (SELECT * FROM tblAdresse WHERE fldType = 1) a1 ON o.fldId = a1.fldOrdreId LEFT JOIN (SELECT * FROM tblAdresse WHERE fldType = 2) a2 ON o.fldId = a2.fldOrdreId WHERE o.fldId = 166
Smukt. Tak for hjælpen Christian_Belgien. Det giver selvfølgelig fantastisk god mening, når jeg nu ser svaret foran mig. Jeg tror jeg skal i gang med at nærstudere joins. :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.