NovaMedlem sedan feb. 2005216 inlägg Detta använder jag för att få fram info om hunden i dagboken,
strQ = "SELECT dagbok.*, hundar.* FROM hundar INNER JOIN dagbok ON hundar.hund_nr = dagbok.hund_nr
WHERE dagbok_nr = " & FixqueryInject("dagbok_nr")
men jag har så att man kan knyta två hundar till varje dagbok och det andra hundnummret hamnar i DAGBOK hund_nr2, hur ska man skriva/tänka för att kunna använda hund_nr2 och skriva ut all info om den också. För i bland finns hund_nr2 och i bland inte och i bland är det två hundar i dagboken hund_nr och hund_nr2.
emissionMedlem sedan dec. 19996 721 inlägg Då får man joina in hund-tabellen två gånger, och med hjälp av left outer join så blir inte "joinen" tvingande, dvs det krävs ingen hund_nr2 (men däremot en hund_nr1, eftersom vi har en vanlig join där)
strQ = "SELECT * FROM dagbok INNER JOIN hundar h1 ON h1.hund_nr = dagbok.hund_nr LEFT OUTER JOIN hundar h2 ON h2.hund_nr = dagbok.hund_nr2
WHERE dagbok_nr = " & FixqueryInject("dagbok_nr")
Det enda problemet med denna SQL-sats är att vi plockar ut en sjuhelsikes massa kolumnner (alla), och namnen på dessa kommer att kollidera. Det löser man genom alias
SELECT dagbok.*, h1.noslangd as enanosen, h2.noslangd as andranosen ......
LarsGMedlem sedan dec. 200012 464 inlägg select h1.kolumner, d.kolumner,h2.kolumner
from hundar h1 join dagbok d on h1.hund_nr = d.hund_nr
left join hundar h2 on d.hund_nr2 = h2.hundnr
where dagbok_nr = 4711
Att alltid hämta alla kolumner är slöseri. Ange explicit de kolumner som är relevanta att hämta.
Egentligen är din design inte den bästa. Det man skall tänka på är att inte ha flera kolumner enligt din modell hund_nr och hund_nr2. För att kunna hantera att associera ett godtyckligt antal hundar för varje dagbok så använder man tre tabeller
DAGBOK
--------
dagboksNummer
datum
innehåll
HUNDAR
--------
HundNummer
innehåll
HUNDDAGBOK
-------------
hundNummer
dagboksNummer
NovaMedlem sedan feb. 2005216 inlägg Hm.. Tackar för svaren, det får bli tre tabeller istället för som jag har nu, Jag (tröga jag) trodde att det skulle gå på ett enkelt och effektivt sätt att ha "två id".
// Tackar