Avatar billede jakobgt Nybegynder
18. maj 2005 - 22:44 Der er 1 løsning

join hvor udebleven række bliver til null

Hej!

Jeg har 2 tabeller, billeder og thumbnails, hvor billeder referer til thumbnails via et thumb_id-felt.
I mit system kan det samme billede godt referere til det samme thumbnail, så derfor vil jeg gerne tjekke, inden jeg sætter et nyt billede + thumbnail ind i tabellerne, om billedet og/eller thumbnailen eksisterer i forvejen.
Er det muligt vha. een query (altså ikke noget med 2 eller flere querier)? Jeg havde forestillet mig noget ala en join, hvor den, hvis det var muligt, kunne indsætte et null, hvis billedet i billeder-tabellen f.eks. ikke eksisterede, mens man stadig ville få thumbnail'en.



Et par eksempler:
Både billede og thumbnail:
|pictID|thumbID|
  23    56

Billede, men intet thumbnail
|pictID|thumbID|
  23    null

Intet billede men thumbnail
|pictID|thumbID|
  null    56

Jeg er selv kommet frem til noget á la (billederne bliver identificeret via et unique_id som bare er et md5-sum af filen.)

SELECT DISTINCT IF ( fileT.unique_id = '56d85eaca9dabc8ef769de61a2719023', fileT.id, NULL ) AS fileID, IF ( pictT.unique_id = '56d85eaca9dabc8ef769de61a2719023', pictT.id, NULL ) AS pictID, pictT.dir_id, dirT.filename as dir_path FROM files AS fileT, pictures AS pictT left join directories as dirT on (pictT.dir_id = dirT.id) HAVING fileID IS NOT NULL OR pictID IS NOT NULL ORDER BY fileID DESC , pictID DESC

som giver hvis både billede og thumbnail eksisterer:
fileID | pictID | dir_id | dir_path
100       100       13      2005-05-18 Diverse/

Som I kan se virker det sådan set udmærket. Problemet er at den tager 0.1232 sek. at udføre, så derfor bliver den hurtig tung at lege med hvis man bare har 15-20 billeder man skal kigge på ad gangen.
Avatar billede jakobgt Nybegynder
23. maj 2005 - 23:04 #1
nå det ser ikke ud til at der er nogen som har en løsning.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester