Kom ihåg mig?
Home Menu

Menu


Behöver hjälp med en SQL-fråga

Ämnesverktyg Visningsalternativ
Oläst 2009-11-29, 20:25 #1
Z@ckes avatar
Z@cke Z@cke är inte uppkopplad
Nykomling
 
Reg.datum: May 2006
Inlägg: 32
Z@cke Z@cke är inte uppkopplad
Nykomling
Z@ckes avatar
 
Reg.datum: May 2006
Inlägg: 32
Standard Behöver hjälp med en SQL-fråga

Hej,
Jag behöver hjälp med en SQL-fråga som jag inte får till. Håller på med en bild-databas till båt-klubben där varje bild kan taggas upp med ett eller flera nyckelord.

Tabell 1, "tblBilder", har info om själva bilden:
intBildID, strFilNamn

Tabell 2, "tblNyckelord", innehåller nyckelorden
intNoID, strNyckelord

Tabell 3, "tblLinkerBilderNyckelord", innehåller länkning mellan bilderna och nyckelorden
intBildID, intNoID

Om jag nu vill kunna filtrera sökträffarna så att endast de bilder visas som har koppling till SAMTLIGA nyckelord man valt i sin sökning visas, dvs inte bara något av nyckelorden, hur sjutton ser den frågan ut? Indata till frågan är alltså ett eller flera "intNoID".

Hoppas någon som är mer haj på SQL än jag kan hjälpa mig med detta... Tack på förhand!
Z@cke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-29, 21:25 #2
Ristorasto Ristorasto är inte uppkopplad
Medlem
 
Reg.datum: Mar 2006
Inlägg: 90
Ristorasto Ristorasto är inte uppkopplad
Medlem
 
Reg.datum: Mar 2006
Inlägg: 90
Standard Kanske såhär

SELECT b.* FROM tblBilder b INNER JOIN tblLinkerBilderNyckelord lbn ON b.inBildID = lbn.intBildID
WHERE
lbn.intNoID = 1 AND
lbn.intNoID = 2 AND
lbn.intNoID = 3 AND
lbn.intNoID = 4 AND
lbn.intNoID = 5
GROUP BY b.intBildID

Eller något sånt
Ristorasto är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-29, 22:29 #3
Z@ckes avatar
Z@cke Z@cke är inte uppkopplad
Nykomling
 
Reg.datum: May 2006
Inlägg: 32
Z@cke Z@cke är inte uppkopplad
Nykomling
Z@ckes avatar
 
Reg.datum: May 2006
Inlägg: 32
Tack, men den lösningen funkade tyvärr inte. Så fort jag har fler än ett intNoID i den sökningen får jag inga träffar alls, trots att det borde det enligt den data som finns i tabellerna...
Z@cke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-29, 23:29 #4
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Har nog inget färdigt förslag på lösning, men att sql-satsen ovan inte fungerar på att det är helt omöjligt att en och samma rad kan ha både värdena 1, 2, 3, 4 och 5 på samma kolumn..

Rent teoretiskt, det du borde göra är att ha nästlade select-satser, den innersta något i stil med:

select count(intNoId), intBildId as intBildIdCurrent as cintNoId from tblLinkerBilderNyckelord where intNoId = 1 or intNoId = 2 or intNoID = 3 osv. osv. group by intBildId

Den andra nästlade:

select count(intNoId) as cintNoIdAll from tblLinkerBilderNyckelord where intBildId = intBildIdCurrent

Den yttersta:

select * from tblBilder [nästlad sql osv.] where cIntNoId = cintNoIdAll

Sen hur det ska klistras ihop har jag ingen koll på.. Men, men.
Onkelborg är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-30, 08:30 #5
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
Citat:
Ursprungligen postat av Z@cke Visa inlägg
Hej,
Jag behöver hjälp med en SQL-fråga som jag inte får till. Håller på med en bild-databas till båt-klubben där varje bild kan taggas upp med ett eller flera nyckelord.

Tabell 1, "tblBilder", har info om själva bilden:
intBildID, strFilNamn

Tabell 2, "tblNyckelord", innehåller nyckelorden
intNoID, strNyckelord

Tabell 3, "tblLinkerBilderNyckelord", innehåller länkning mellan bilderna och nyckelorden
intBildID, intNoID

Om jag nu vill kunna filtrera sökträffarna så att endast de bilder visas som har koppling till SAMTLIGA nyckelord man valt i sin sökning visas, dvs inte bara något av nyckelorden, hur sjutton ser den frågan ut? Indata till frågan är alltså ett eller flera "intNoID".

Hoppas någon som är mer haj på SQL än jag kan hjälpa mig med detta... Tack på förhand!

Något sådant!?
Kod:
SELECT b.* FROM tblBilder b INNER JOIN tblLinkerBilderNyckelord lbn ON b.inBildID = lbn.intBildID
WHERE 
lbn.intNoID IN (SELECT intNoID FROM tblNyckelord GROUP BY intNoID)
allstars är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-11-30, 09:29 #6
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
Typ såhär kanske:
Kod:
SELECT intBildID 
FROM tblLinkerBilderNyckelord
WHERE intNoID IN (10, 20, 30, 40)
GROUP BY intBildID
HAVING COUNT(1) = 4
ORDER BY intBildID
4 = antalet nyckelord som du söker efter.
Bjorne är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-02, 20:14 #7
Z@ckes avatar
Z@cke Z@cke är inte uppkopplad
Nykomling
 
Reg.datum: May 2006
Inlägg: 32
Z@cke Z@cke är inte uppkopplad
Nykomling
Z@ckes avatar
 
Reg.datum: May 2006
Inlägg: 32
Tackar! Funkar klockrent!
Z@cke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-03, 06:38 #8
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Just IN är något som alla borde lära sig när de börjar med SQL. Har sett otaliga exempel på långa OR-rabblingar som inte ser så snygga ut

Tänk dock på att detta är en ganska tung förfrågan så har du mycket trafik och en stor databas får du se upp lite. I ditt fall är det självfallet ingen fara.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-05, 19:34 #9
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Vet om IN, fast jag knackar inte SQL så ofta så jag kan det på mina fem fingrar..
Onkelborg är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:59.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017