1. Detta är ett forum.
2 Vill söka efter alla inlägg som en användare gjort.
3. Har tre tabeller:
* PaceBoard_Topics - Trådens första inlägg
* PaceBoard_Members - Alla anävndare
* PaceBoard_Replys - Inläggen i en viss tråd
4. Vill söka igenom dessa tre tabeller där både PaceBoard_Topics och PaceBoard_Replys kan innehålla inlägg som använaren gjort.
Har följande kod som söker igenom ett PaceBoard_Topics och _Replys efter en söksträng:
SELECT
PaceBoard_Forums.Forum_ID, PaceBoard_Forums.F_Name, PaceBoard_Topics.Topic_ID,
PaceBoard_Topics.T_Subject, PaceBoard_Topics.T_Last_Post, PaceBoard_Members.M_Name
FROM ((PaceBoard_Forums
LEFT JOIN PaceBoard_Topics ON PaceBoard_Forums.Forum_ID = PaceBoard_Topics.Forum_id)
LEFT JOIN PaceBoard_Replys ON PaceBoard_Topics.Topic_ID = PaceBoard_Replys.Topic_ID)
LEFT JOIN PaceBoard_Members ON PaceBoard_Topics.T_Originator = PaceBoard_Members.Member_ID
WHERE (PaceBoard_Forums.F_Description LIKE '%pace%'
OR PaceBoard_Replys.R_Message LIKE '%pace%'
OR PaceBoard_Topics.T_Message LIKE '%pace%'
OR PaceBoard_Topics.T_Subject LIKE '%pace%')
Hmmm, har lite svårigheter, det tycks gå över mitt förstånd.
Om jag söker efter exempelvis "Pace" i sökfältet, hur ska jag få PaceBoard_Members.M_Name = 'pace' att söka efter exempelvis användar ID 7?
SELECT PaceBoard_Forums.Forum_ID, PaceBoard_Forums.F_Name, PaceBoard_Topics.Topic_ID, PaceBoard_Topics.T_Subject, PaceBoard_Topics.T_Last_Post, PaceBoard_Members.M_Name
FROM ((PaceBoard_Forums LEFT JOIN PaceBoard_Topics ON PaceBoard_Forums.Forum_ID = PaceBoard_Topics.Forum_id)
LEFT JOIN PaceBoard_Replys ON PaceBoard_Topics.Topic_ID = PaceBoard_Replys.Topic_ID)
LEFT JOIN PaceBoard_Members ON PaceBoard_Topics.T_Originator = PaceBoard_Members.Member_ID
UNION SELECT PaceBoard_Replys.* FROM (PaceBoard_Replys LEFT JOIN PaceBoard_Topics ON PaceBoard_Replys.Topic_ID = PaceBoard_Topics.Topic_ID)
WHERE PaceBoard_Members.M_Name = 'pace'
Skulle du kunna ge en förklaring hur din SQL sats fungerar, jag är rädd för att mina kunskaper tog slut vid första inlägget.
Tabellen PaceBoard_Topics innehåller i alla fall följande:
PaceBoard_Topics
Topic_ID - num
Forum_id - num
T_Subject - txt
T_Message - txt
T_Originator - num
T_Replies - num
T_Last_Post - date
T_Status - true/false
T_Date - date
T_MsgIcon - num
T_NoOfRead - num
T_OldForum - num
[r] Förresten, varför flyttas tråden hit, till databaser/Sql forumet? Med tanke på att SQL forumet ligger under databaser-kategorin så borde det väl ha med SQL Server att göra? Eller är detta forum för allmänna SQL frågor?
En union all innebär att man får alla poster från de båda ingående select-satserna. (Om man utelämnar all så tas alla kopior bort från resultatet.) I en union så måste de båda ingående select-satserna returnera lika många fält och dessa måste vara av jämförbara typer.
De båda select-satserna är väl inte så konstiga, bara vanliga joinar.
Forumet är avsett för allmäna sql-frågor.
Egentligen är det Access och Mysql som är malplacerade i förhållande till rubriken.