Ich habe ein seltsames Problem:LEFT JOIN Problem innerhalb einer gespeicherten Prozedur
SELECT a.uid, b.*, c.liveId FROM a
INNER JOIN b ON (a.uid=b.uid AND a.versionNo=b.versionNo)
LEFT JOIN c ON (a.uid=c.uid)
WHERE a.memberId=1;
Ich nenne das aus einer Abfrage-Browser und es 3 Zeilen zurückgibt. Ich rufe es aus einer gespeicherten Prozedur heraus und es gibt 2 Zeilen (der LINKE JOIN wird unwirksam).
DELIMITER //
DROP PROCEDURE IF EXISTS sp_Test //
CREATE
DEFINER = CURRENT_USER
PROCEDURE sp_Test(IN in_mid INTEGER UNSIGNED)
READS SQL DATA
NOT DETERMINISTIC
BEGIN
SELECT a.uid, b.*, c.liveId FROM a
INNER JOIN b ON (a.uid=b.uid AND a.versionNo=b.versionNo)
LEFT JOIN c ON (a.uid=c.uid)
WHERE a.memberId=in_mid;
END //
DELIMITER ;
Ich bin ratlos! Irgendwelche Vorschläge?
Was sind a, b und c? Ich glaube, du hast etwas vergessen. –
@Tom Ritter: Ich nehme an, er ist in der unästhetischen Angewohnheit, seine Join-Tabellen alphabetisch zu aliasieren. – Tomalak
@Ted: Würden Sie Ihre Frage bearbeiten und die Tabellenaliase an den richtigen Stellen hinzufügen? – Tomalak