webForumDet fria alternativet

DISTINCT accepteras ej

10 svar · 299 visningar · startad av Skarre

SkarreMedlem sedan apr. 20012 427 inlägg
#1

När jag kör nedanstående fråga får jag ut dubletter och när jag försöker motverka detta genom att lägga till DISTINCT säger servern följande:

Microsoft][ODBC SQL Server Driver][SQL Server]The text, ntext, or image data type cannot be selected as DISTINCT.

SELECT m.*, c.title category, t.[date], t.startTime 
FROM tblEventTimes t 
INNER JOIN tblEventMain m ON eventRef = m.id 
INNER JOIN tblEventCategories c ON m.categoryRef = c.id 
WHERE eventRef = m.id AND datediff(dd, getdate(), date) >= 0 
AND m.categoryRef <> 25 
ORDER BY t.[date], t.startTime

Tack på förhand!

@ndersMedlem sedan juni 200032 969 inlägg
#2

Felmeddelandet torde vara självklart???

Du kan inte ha med fält av typen text, ntext eller image i SELECT DISTINCT.

SkarreMedlem sedan apr. 20012 427 inlägg
#3

Jo, jag förstår engelska. Jag hade väl hoppats på att någon kunde hjälpa mig att komma runt problemet.

SkarreMedlem sedan apr. 20012 427 inlägg
#4

Nu har jag suttit i en och en halv timme och ger upp. Jag vore extremt tacksam om någon kunde förklara hur jag ska göra för att få önskat resultat, d.v.s. mitt nuvarande resultat utan dubletter från tblEventMain. Så här ser databasen ut:

Vad jag vill ha ut är en lista över evenemang som börjar i dag eller senare, sorterad efter evenemangets första datum. Jag vill egentligen även ha samtliga datum för varje evenemang, men i värsta fall får jag göra en extra fråga för att få ut dessa.

Tack på förhand!

aasahMedlem sedan mars 20034 471 inlägg
#5

Låt bli att ta ut synopsis från tblEventMain. Det är ju bara den som har strulande typ. Så byt ut m.* mot en uppräkning av alla andra kolumner som du vill få ut.

Om synopsis är viktigt så är det bättre om du plockar ut det för sig, det kommer ju inte att förändras för olika föreställningar. Så ta ut föreställningar för alla event enl ovan och plocka sedan ut id, title och synopsis, tex, i en egen tabell. Då visas synopsis bara en gång/event.

SkarreMedlem sedan apr. 20012 427 inlägg
#6

Tack för det aasah, jag testar det.

SkarreMedlem sedan apr. 20012 427 inlägg
#7

Efter att ha försökt i ett par timmar har jag fortfarande inte lyckats få önskat resultat, så jag skulle verkligen uppskatta lite hjälp.

Frågan med DISTINCT fungerar som väntat om jag exkluderar ntext-fältet, men jag får fortfarande dubletter. Det beror väl säkert på att ett evenemang ibland har flera poster med samma datum men olika tider i "tblEventTimes".

Så här ser frågan ut just nu:

SELECT DISTINCT m.id, m.title, m.arrangedBy, m.location, m.price, m.tickets, m.weblink, c.title AS category, t.[date], t.startTime
FROM tblEventMain m
INNER JOIN tblEventTimes t ON m.id = t.eventRef
INNER JOIN tblEventCategories c ON m.categoryRef = c.id
WHERE datediff(dd, GETDATE(), t.[date]) >= 0
AND m.categoryRef <> 25
ORDER BY t.[date], t.startTime

Jag vill alltså ha en lista över alla evenemang som börjar i dag eller senare, och denna lista ska sorteras efter dess tidigaste datum (i tblEventTimes). Jag ska fundera vidare, men om någon har några tips så uppskattas det.

Engine^Medlem sedan dec. 20003 887 inlägg
#8

Det kanske går bättre om du använder dig av GROUP BY istället för DISTINCT

SELECT m.id, m.title, m.arrangedBy, m.location, m.price, m.tickets, m.weblink, c.title, t.[date], t.startTime
FROM tblEventMain m
INNER JOIN tblEventTimes t ON m.id = t.eventRef
INNER JOIN tblEventCategories c ON m.categoryRef = c.id
WHERE datediff(dd, GETDATE(), t.[date]) >= 0 AND m.categoryRef <> 25
GROUP BY m.id, m.title, m.arrangedBy, m.location, m.price, m.tickets, m.weblink, c.title, t.[date], t.startTime
ORDER BY t.[date], t.startTime
SkarreMedlem sedan apr. 20012 427 inlägg
#9

GROUP BY fungerar dessvärre inte heller. I och med att jag har fortfarande har med t.[date] och t.startTime blir det dubletter. Om jag inte väljer dessa två kolumner så fungerar GROUP BY utmärkt, men jag måste ju som sagt ha med dessa någonstans för att kunna sortera efter tidigaste datum.

Vad tror du Engine^, finns det en lösning? Jag funderar annars på att försöka lösa det med en flerdimensionell matris, men det känns som om det kommer att ta lite tid så jag skulle helst slippa. :)

Engine^Medlem sedan dec. 20003 887 inlägg
#10

Lösning... nja det låter som om du inte designat tabellerna efter hur du vill visa datan. Det känns ivarjefall som att problemet ligger i designen.

SkarreMedlem sedan apr. 20012 427 inlägg
#11

Nu låter det som om jag skyller ifrån mig, men det är inte jag som gjort webbplatsen från början. :) Hursomhelst så får jag tacka för hjälpen.

133 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)