Jag har problem med den här SQL-frågan. Den söker igenom en kategori och underliggande kategorier efter användare. Problemet är bara att samma användare kan finnas i flera kategorier (genom en referenstabell). Så när man söker får man upp samma användare flera gånger.
SELECT * FROM tblM_Address a
INNER JOIN tblM_AddressReference r
ON a.AddressId = r.AddressRefAddressId
AND (r.AddressRefCategoryId = 3 OR r.AddressRefCategoryId IN (12,16,13,15,14,17,19))
WHERE AddressSiteId = 4
AND AddressXModuleId = 276
AND (AddressFirstName LIKE '%erik%'
OR AddressLastName LIKE '%erik%'
OR AddressCompany LIKE '%erik%'
OR AddressPhone LIKE '%erik%'
OR AddressMobile LIKE '%erik%'
OR AddressEmail LIKE '%erik%'
OR AddressHomePage LIKE '%erik%'
OR AddressStreet LIKE '%erik%'
OR AddressZipCode LIKE '%erik%'
OR AddressCity LIKE '%erik%'
OR AddressCountry LIKE '%erik%'
OR AddressComment LIKE '%erik%')
ORDER BY AddressFirstName
Jag försökte slänga in en GROUP BY AddressId i mellanrummet.
Men då får jag en massa såna här meddelanden:
Server: Msg 8120, Level 16, State 1, Line 1
Column 'a.AddressXModuleId' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Och snälla, gör inte om frågan alltför mycket eftersom att jag då måste gå in och ändra den VB-koden som genererar den här SQL:en. Och jag vill gärna slippa ändra allt.
Skrev så här nu, vilket ju funka, men är en helt hemsk lösning.
SELECT AddressId, AddressXModuleId, AddressSiteId, AddressFirstName, AddressLastName, AddressCompany, AddressPhone, AddressMobile,
AddressEmail, AddressHomePage, AddressStreet, AddressZipCode, AddressCity, AddressCountry, AddressCreationDate
FROM tblM_Address a
INNER JOIN tblM_AddressReference r
ON a.AddressId = r.AddressRefAddressId
AND (r.AddressRefCategoryId = 3 OR r.AddressRefCategoryId IN (12,16,13,15,14,17,19))
WHERE AddressSiteId = 4
AND AddressXModuleId = 276
AND (AddressFirstName LIKE '%erik%'
OR AddressLastName LIKE '%erik%'
OR AddressCompany LIKE '%erik%'
OR AddressPhone LIKE '%erik%'
OR AddressMobile LIKE '%erik%'
OR AddressEmail LIKE '%erik%'
OR AddressHomePage LIKE '%erik%'
OR AddressStreet LIKE '%erik%'
OR AddressZipCode LIKE '%erik%'
OR AddressCity LIKE '%erik%'
OR AddressCountry LIKE '%erik%'
OR AddressComment LIKE '%erik%')
GROUP BY AddressId, AddressXModuleId, AddressSiteId,
AddressFirstName, AddressLastName, AddressCompany,
AddressPhone, AddressMobile, AddressEmail,
AddressHomePage, AddressStreet, AddressZipCode,
AddressCity, AddressCountry, AddressCreationDate
ORDER BY AddressFirstName
Varför är det problem om du får upp samma adressid flera gånger? Det är ju väldigt mycket enklare att gruppera ihop det på klientsidan än att göra det i SQL (i de flesta fall.)
394 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9