"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns98E575729C2EAjcdmfdk@gyrosmod.cybercity.dk...
> EnjoyNews skrev:
>
>> Jeg har så også et firma table som er magen til.
>
> Har du overvejet at have firmaer og kunder samme sted? (evt. med et
> felt til at angive om de er firmaer, kunder eller måske begge dele)
>
> Tabeller der er helt eller næsten ens, kan være tegn på uheldigt
> design.
Er de så ikke sværere at sammenligne hvis de ligger i samme table ??
>
>> Jeg kan godt matche de 2 lokations filtre sådan her:
>> SELECT * FROM KFilterLokation kfl LEFT JOIN FFilterLokation
>> ffl ON (kfl.LokationFilterID = ffl.LokationFilterID)
>
> Hvorfor bruger du LEFT i stedet for INNER join? Du er vel kun
> interesseret i par der passer.
Ja det er en fejl.. Der skulle have stået INNER JOIN
>
>> Dette kan jeg selvfølgelig også med Type filtret...
>> Men... Det jeg gerne vil er at finde dem der matcher begge
>> filtre med en eller flere match fra både Lokation og Type.
>
> Et skud fra hoften:
>
> SELECT *
> FROM KFilterLokation kfl INNER JOIN FFilterLokation ffl
> ON kfl.LokationFilterID = ffl.LokationFilterID
> INNER JOIN KFilterType kft ON kfl.firmaID = kft.firmaID
> INNER JOIN FFilterType fft ON ktf.TypeFilterID = fft.TypeFilterID
>
>
> Pointen er at lave et join mellem dine to filter-joins - baseret på
> firmaID som bindeleddet.
Det virker ikke helt... Den lægger lokationerne sammen som den skal, og
laver man så et INNER JOIN til type tablen virker det også, og det er kun
kundes type valg der vises.
Men laver man så det sidste INNER JOIN for at sammenligne med det andet type
filter tilføjer den nogle der passer type mæssigt sammen men ikke passer
lokations mæssigt..
Og det er lige netop det jeg bare ikke på nogen måde kan få den til at lave
anderledes...
Jeg har også prøvet at lave ét table med både kundes lokation og type valg
og ligeledes ét table til firmaets lokation og type valg... Men dem kan jeg
heller ikke få til at sætte sig rigtigt sammen...
Jeg har lavet en meget simpel table med 2 kunder der har valgt:
Lokation 1 og type 4,5
Lokation 1,2 og type 4
Og så en simpel firma table med 3 firmaer der har valgt:
Lokation 1 og type 4,5
Lokation 1,2 og type 4
Lokation 2 og type 5
Ingen af de to kunder burde blive paret med firma 3 da kunde 1 ikke matcher
på lokation og kunde 2 ikke passer med type...
Men ligemeget hvad jeg gør, så er firma 3 at finde i listen når man får
join'et alle 4 tables (kunde lokation, firma lokation, kunde type og firma
type)
Det er så her mine grå hår ikke rigtig vil forsvinde, og det er bare så
irreterende at går rundt med sådan et problem i hovedet hele dagen lang
>
> I praksis vil et join til firma- og kundetabellerne nok også skulle
> lægges på - og evt. med en DISTINCT eller GROUP BY til at fjerne
> overflødige informationer.
Ja det er klart... jeg skal bare lige have det til at virke først..
>
> NB: Hvilken database benytter du?
Det er en MySQL database.