webForumDet fria alternativet

Access 2007: Söka efter ett värde i flera tabeller

Databaser & SQL

4 svar · 443 visningar · startad av Mattias Nordin

Medlem sedan dec. 20051 056 inlägg
Frågan#1

Håller på att försöka skapa en sökfunktion till mitt fotoalbum. Jag nyckelord samt några textfält som jag vill söka i.

A) Hur söker man smidigt i flera tabeller samtidigt?

B) Går det att använda LIKE % i en IN fråga?

Jag tänkte mig något liknande men behöver söka i följande fält:

T_bild_register.bildtext
T_album_namn.album_namn
T_keywords.keyword

sql = "SELECT * FROM T_bild_register WHERE bild_text IN ('Mattias')"

:stud

Medlem sedan dec. 20051 056 inlägg
#2

Hmm... funderar vidare. Nu är jag inne på något liknande:

sql = "SELECT * FROM ((T_bild_register "						&_
" INNER JOIN T_album_namn ON T_bild_register.album_id = T_album_namn.ID) "		&_
" INNER JOIN T_keywords ON T_bild_register.id = T_keywords.pic_id) "			&_
" WHERE T_bild_register.bild_text IN ('Mattias')"								&_
" OR T_album_namn.album_namn IN ('Fest i öregrund')"

Men det returnerar inte det jag förväntar mig :(

Medlem sedan dec. 20051 056 inlägg
#3

Ibland är det bra att ha en monolog med sig själv. Följande fungerar faktiskt till 90%

sql = "SELECT T_bild_register.id, bild_path_thumb, bild_text, album_namn, relative_root_folder_path, keyword " &_
" FROM (T_bild_register "														&_
" LEFT JOIN T_album_namn ON T_bild_register.album_id = T_album_namn.ID) "		&_
" LEFT JOIN T_keywords ON T_bild_register.id = T_keywords.pic_id "				&_
" WHERE T_bild_register.bild_text IN ('Mattias')"								&_
" OR T_album_namn.album_namn IN ('Fest i öregrund')"

Nu återstår bara fråga B)
Finner inte någon information om det är möjligt att köra LIKE % ... % i IN frågan.

RED:

Anledningen till att jag snöat in mig på att använda IN är att jag skulle vilja utöka funktionaliteten till att söka på flera keywords och då fick jag för mig att IN var lämpligt. Följande har jag fått att fungera men dock bara med ett keyword.

sql = "SELECT T_bild_register.id, bild_path_thumb, bild_text, album_namn, relative_root_folder_path, keyword " &_
" FROM (T_bild_register "														&_
" LEFT JOIN T_album_namn ON T_bild_register.album_id = T_album_namn.ID) "		&_
" LEFT JOIN T_keywords ON T_bild_register.id = T_keywords.pic_id "				&_
" WHERE (T_bild_register.bild_text LIKE '%" &sSearchForThis &"%'"				&_
" OR T_album_namn.album_namn LIKE '%" &sSearchForThis &"%')"
Medlem sedan juni 200032 967 inlägg
#4

Finner inte någon information om det är möjligt att köra LIKE % ... % i IN frågan.

Nej, det går inte. Man får krångla.

... WHERE (foo LIKE '%foo%' OR foo LIKE '%bar%' OR bar LIKE '%foo%' OR bar LIKE '%bar%')
Medlem sedan dec. 20051 056 inlägg
#5

Även ditt tjugofemtusenandra inlägg håller yppersta klass! Fantastiskt. :)

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)