ho 2 tabelle (semplifico un pò):
oggetti
Codice PHP:
CREATE TABLE `prova`.`oggetti` (
`id` INT NOT NULL AUTO_INCREMENT ,
`testo` VARCHAR( 250 ) NOT NULL ,
`prezzo` DECIMAL( 5, 2 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = INNODB;
INSERT INTO `oggetti` VALUES(1, 'primo oggetto', 10.10);
INSERT INTO `oggetti` VALUES(2, 'secondo oggetto', 12.84);
movimenti
Codice PHP:
CREATE TABLE `prova`.`movimenti` (
`id` INT NOT NULL AUTO_INCREMENT ,
`idOggetto` INT NOT NULL ,
`tipoMovimento` SMALLINT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = INNODB
e devo avere una query che mi restituisce id oggetto sempre, e se c'è il collegamento con la tabella movimenti l'id del movimento, altrimenti null.
questa è quella che ho scritto:
Codice PHP:
SELECT oggetti.id, movimenti.id
FROM oggetti
LEFT JOIN movimenti ON ( movimenti.idOggetto = oggetti.id )
e funzionerebbe anche, se la tabella movimenti è vuota mi restituisce
id id
1 NULL
2 NULL
che è giusto, idem se ho un movimento per un solo oggetto:
INSERT INTO `movimenti` VALUES(1, 1, 2);
1 1
2 NULL
ora però io dovrei differenziare per il campo movimenti.tipoMovimento...
perchè se correggo al query con
Codice PHP:
SELECT oggetti.id, movimenti.id
FROM oggetti
LEFT JOIN movimenti ON ( movimenti.idOggetto = oggetti.id )
WHERE movimenti.tipoMovimento = '4'
se non ci sono i movimenti non mi restituisce nessuna riga, invece del idOggetto e NULL?