@saro78 said:
non è facile senza il db davanti, ci provo, fai la tua stessa query con le condizioni in OR invece che AND, a questo punto per lo stesso id_prodotto hai due record per chi ha 1 e 6, o un record se non c'è variante. Per capire quale ordine ha le due varianti fai una GROUP BY per i 3 campi della SELECT è prendi quelli con coun(*) = 2.
> SELECT
`ordini_dettaglio`.`quantita`,
`ordini_dettaglio`.`id_ordine`,
`ordini_dettaglio`.`id_prodotto`
FROM
`ordini_dettaglio`
Left Join `ordine_dettaglio_varianti` ON `ordine_dettaglio_varianti`.`idOrdineDettaglio` = `ordini_dettaglio`.`id`
WHERE
`ordine_dettaglio_varianti`.`idVarianteOpzione` = '1'
**OR**
`ordine_dettaglio_varianti`.`idVarianteOpzione` = '6'
**GROUP BY **** `ordini_dettaglio`.`quantita`,
`ordini_dettaglio`.`id_ordine`,
`ordini_dettaglio`.`id_prodotto`**
** HAVING COUNT(*) = 2**
>```non ti assicuro il risultato, sono andato a mente:)
Ho provato ad adottare la tua tecnica...
Ma se nello stesso "ordine" uno compra una maglietta taglia S Rossa e un altra maglietta taglia S Gialla, la tua query non è in grado di capire l'id_dettaglio_ordine giusto perchè tutte e due le query soddisfano la condizione.
Cioè
WHERE
`ordine_dettaglio_varianti`.`idVarianteOpzione` = '1'
**OR**
`ordine_dettaglio_varianti`.`idVarianteOpzione` = '6'
è uguale a
WHERE
`ordine_dettaglio_varianti`.`idVarianteOpzione` = '1'
**OR**
`ordine_dettaglio_varianti`.`idVarianteOpzione` = '7
Perchè quell'OR fa si che almeno una delle due condizioni sia soddisfatta