Jag upptäckte just ett skumt SQL-fenomen. Jag har tre tabeller en med användare, en med komponenter och en tabell som kopplar ihop användare och komponenter i en många till många-relation. Vad komponenter är spelar ingen större roll men i just det här fallet har det med rättigheter att göra.
Hur som helst vill jag välja ut en användare med alla sina tillhörande komponenter men om användaren inte har någon komponent kopplad till sig vill jag ändå ha ut användaren men med nullvärden där komponentens värden brukar vara.
Det fungerar oftast bra men inte alltid. Om relationstabellen inte innehåller några rader alls får jag heller inte tillbaka några rader. Om den innehåller minst en rad (med vilket värde som helst) får jag tillbaka det förväntade resultatet dvs. alltid användaren och om denne har komponenter kopplade till sig får jag även dessa.
Jag har två frågor angående detta:
1. Är det en bugg i MySQL? Någon som sett något liknande tidigare?
2. Finns det ett sätt att göra left outer joins på en liknande tre-tabellers-kombination och slippa få null-värden endast i de fall då användaren har minst en riktig komponent kopplad till sig?