Är det inte så en left join funkar?
Testa att ta bort "left".
Du bör väl även ha en referens mellan de olika tabellerna.
8 svar · 327 visningar · startad av pettsson
Försöker välja fälten HardwareRevision och HardwarePartNo från tabellen board_revision och fältet BoardSerialNo från board_test med denna fråga
SELECT rev.HardwareRevision, rev.HardwarePartNo, test.BoardSerialNo FROM board_revision rev LEFT JOIN board_test test ON rev.HardwarePartNo = $_GET[hwpn] AND rev.HardwareRevision = '$_GET[hwr]'
Detta ger ~12000 träffar, men det borde bara ge ett. Om tar jag bort joinen så funkar det, förutom att jag då inte får med det fältet i resultatet.
Är det inte så en left join funkar?
Testa att ta bort "left".
Du bör väl även ha en referens mellan de olika tabellerna.
Vad innehåller $_GET[hwpn]?
Hur ser den färdiga SQL-frågan ut? Det hjälper oss inte att se att du har php-variabler i SQL-frågan eftersom vi inte vet vad de innehåller.
Det funkar inte heller utan "left". Hur menar du med en referens?
/e
@nders: Utskrift av frågan:
SELECT rev.HardwareRevision, rev.HardwarePartNo, test.BoardSerialNo
FROM board_revision rev
JOIN board_test test
ON rev.HardwarePartNo = 501408002
AND rev.HardwareRevision = 'B'
BoardSerialNo är ett heltal 99<BoardSerial<1000
Du måste ju ha något som knyter ihop de två tabellerna, någon gemensam nämnare?
Typ:
SELECT rev.HardwareRevision, rev.HardwarePartNo, test.BoardSerialNo
FROM board_revision rev
JOIN board_test test
ON rev.fält = test.fält
WHERE rev.HardwarePartNo = 501408002
AND rev.HardwareRevision = 'B'
HardwarePartNo och HardwareRevision finns i båda tabellerna. Dock vet man inte säkert att det existerar en rad i board_test, frågan är på en "skapa ny"-sida.
/e
Kommer inte din fråga att generera ett fel om det inte finns något fält som uppfyller kravet?
Kommer inte din fråga att generera ett fel om det inte finns något fält som uppfyller kravet?
Nej
pettsson skrev:
HardwarePartNo och HardwareRevision finns i båda tabellerna.
Då får du ha med dem i ditt joinvillkor.
SELECT rev.HardwareRevision, rev.HardwarePartNo, test.BoardSerialNo
FROM board_revision rev
LEFT JOIN board_test test
ON rev.HardwarePartNo = test.HardwarePartNo
AND rev.HardwareRevision = test.HardwareRevision
WHERE rev.HardwarePartNo = 501408002
AND rev.HardwareRevision = 'B'
Där ser man, och det verkar funka som det ska vid första testet i alla fall :) Tackar för hjälpen, förstår hur de menar i manualen nu, blev lite förvirrad först.