Hej. Jag fattar inte riktigt vad du vill och vad du gör, men om du vill ha många till många relationer så borde fundera om du inte ska använda en relationstabell istället. Inte för att jag förstår mig på tabellnamnen och vad det är för något, men av din beskrivning att döma borde det ju gå att lösa genom Tack för svar! Ahhhh. Det tog en liten stund innan jag förstod vad du menade. Ah, detta ska jag testa.. skulle vara nice om det funkade! :DMånga till många relation problem vid sökning (SQL2005)
Jag har ett litet problem som jag förbisätt.
Jag har en ganska avancerad och sökmotor som använder en bakomliggande query builder.
Vad jag har förbisätt är de sökningar som går mot många till många relationer och som ska ANDas ihop..
Så här kan en sådan sökning se ut..
SELECT DISTINCT * FROM mainTable
LEFT OUTER JOIN subTable1 ON mainTable.Id = subTable1.fk
LEFT OUTER JOIN subTableTyper ON subTable1.TypId = subTableTyper.Id
WHERE
(subTable.somecolumn = 'dummy' AND subTableTyper.typ = 'dummy')
AND (subTable.somecolumn = 'dummy2' AND subTableTyper.typ = 'dummy2')
Som ni ser ställer jag två frågor i where satsen, problemt är ju att en rad i mängden kan ju inte tillhöra både (subTable.somecolumn = 'dummy' AND subTableTyper.typ = 'dummy') OCh (subTable.somecolumn = 'dummy2' AND subTableTyper.typ = 'dummy2')
utan bara en av dem, men resultat mängden ska ju bara vara sådana som innehåller båda... Detta går ju att lösa med lite subselects, MEN det är ganska mycket logik i query buildern att ändra på det.
Lättast skulle det vara om det går att ordna i WHERE clausen, går det?Sv: Många till många relation problem vid sökning (SQL2005)
Sv: Många till många relation problem vid sökning (SQL2005)
WHERE
(subTable.somecolumn = 'dummy' AND subTableTyper.typ = 'dummy')
OR
(subTable.somecolumn = 'dummy2' AND subTableTyper.typ = 'dummy2')
För övrigt ser det ju ut som att du helt borde göra ytterligare ett villkor i joinen om du ändå ska ha samma på de två kolumnerna, och sen bara göra sökning på aktuella (och då snyggare via IN(...)).Sv:Många till många relation problem vid sökning (SQL2005)
Nja, OR stämmer ju inte då kommer du få tillbaks en delmängd där den antingen är det ena eller det andra.. den sak vara både och... Sv: Många till många relation problem vid sökning (SQL2005)
Jag tar mig friheten att göra det mer konkret.
Vi har en tabell med föräldrar (tabell F) och en tabell med barn (tabell B).
En förälder kan ha flera barn och ett barn har flera föräldrar (många till många relation).
För att lösa detta har du skapat en relationstabell (tabell R) som innehåller kombinationerna.
Det du vill ha som svar är vilka föräldrar har barn där den ena heter Nils OCH den andra heter Lisa.
Som jag ser det så MÅSTE vi ha ett OR mellan namnen på barnen men om du vet hur många namn du vill söka på så kan du lägga in en count med villkor.
Svaret nedanstående SQL sats ger blir de föräldra_id som uppfyller villkoret.
Ex (se tabellnamnen enligt ovan).
Select F.F_Id
From F
Inner Join R
On F.F_Id = R.F_Id
Inner Join B
On B.B_Id = R.B_Id
Where B.B_Namn = 'Nils'
OR B.B_Namn = 'Lisa'
Group By F.F_Id
Having Count(F.F_Id) = 2Sv:Många till många relation problem vid sökning (SQL2005)