Sitter och arbetar i ett projekt där man har två tabeller i en Access-databas som är relaterade till varandra. Låt mig ta skivor som ett exempel. Tror du i Access kan använda Select Distinct ... Alternativ kan du använda group by ... vilket också skall medför endast en post om du grupperar på exempelvis group by Album.id Antar att du bara vill få upp Albumets id och namn, då kan du göra såhär (hoppas jag :) Tack för det grabbar, SQL-uttrycket fungerar fint, nästan... Av någon anledning så blev jag tvungen att använda Last istället för First. Annars blev utan albumet helt om det endast blev en träff per album. Måste får påpeka, du skrev också: Använder: ADO 2.5, Access 2000. Så här ska det nog vara förresten:Endast en förekomst av ett id, Access, SQL
Man har en tabell med information om ett Album. Den tabellen är relaterad till en annan med låtarna som finns på albumet. På dessa två vill man genomföra en textsökning. Man kan exempelvis söka på "love" vilket använder följande syntax:
SELECT Album.id, Album.name, Song.id, Song.album, Song.name
FROM Album INNER JOIN Song ON Album.id = Song.album
WHERE Album.name LIKE '%love%' OR Song.name LIKE '%love%'
Då får man tillbaka de album där ordet love ingår i albumnamnet eller i låtnamnet. Men, om det finns flera låtar på samma album som innehåller ordet så förekommer albumet två gånger fast med olika låtar. Detta vill jag undvika eftersom jag endast vill lista de album där ordet förekommer, jag är alltså inte intresserad av vilka eller hur många låtar det är som matchar.
Kan jag i SQL-sattsen göra så att jag endast får upp max en post per album, en förekomst av ett id eller liknande?
(jag vill inte filtrera i den loop jag använder för att skriva ut informationen då jag använder "paging" för att göra detta)
Använder: ADO 2.5, Access 2000.Sv: Endast en förekomst av ett id, Access, SQL
/PelleSv: Endast en förekomst av ett id, Access, SQL
SELECT Album.id, Album.name
FROM Album INNER JOIN Song ON Album.id = Song.album
GROUP BY Album.id, Album.name
HAVING (((Album.name) Like "*love*")) OR (((First(Song.name)) Like "*love*"));
/JohanTackar
Sv: Tackar
Tänk om alla kunde vara lika tydliga som du i sin frågeställning, bra Håkan !Sv: Tackar
SELECT Album.id, Album.name
FROM Album INNER JOIN Song ON Album.id = Song.album
WHERE (((Song.name) Like "*love*") OR ((Album.name) Like "*love*"))
GROUP BY Album.id, Album.name;
Jag skapade uttrycket med verktyget i Access och det blev visst lite fel, detta borde bli mer ricktigt.
/Johan