Hola!!!
Pongo un ejemplo que no es mío pero que igual sirve:
En el ejemplo de arriba, supongamos que queremos obtener los 10 primeros productos (con los datos de Food y Drink segun corresponda)?
En principio se me ocurre que podríamos hacer algo como esto:
SELECT p.*, f.*, d.*
FROM Products p
LEFT JOIN Food f ON p.product_id = f.product_id
LEFT JOIN Drink d ON p.product_id = d.product_id
WHERE p.product_id < 11
Pero en ese caso estamos recorriendo siempre la tabla Food y Drink por cada Producto (aunque solo necesitamos una de las dos ya que son exclusivas), esto supongo hace la consulta un poco más lenta. Y ademas me va a devolver muchos valores NULL en cada fila.
Hay una mejor forma?
Me convendría agragar un campo "tipoDeProducto" a Products para primero detectar si es Food o Drink y hacer una consulta de acuerdo a si es Food o Drink?