webForumDet fria alternativet

Två olika id

3 svar · 257 visningar · startad av Nova

NovaMedlem sedan feb. 2005216 inlägg
#1

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
#2

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
#3
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
#4

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

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)