Hola chicos, estoy rascándome la cabeza con esto, espero que alguien pueda explicarlo por . Honestamente, tengo un poco de miedo de que pueda morderme en el culo más tarde ...¿MYSQL JOIN da resultados inesperados (pero agradables)?
Así que tengo tres mesas de las que estoy sacando actualmente. reports
, berries
y melons
. Configuré mi consulta así, y me da exactamente lo que quiero.
SELECT
rpt.*,
ber.shipper, ber.po, ber.commodity, ber.label
FROM reports rpt
LEFT JOIN berries ber ON rpt.inspection_number = ber.report_key
LEFT JOIN melons mel ON rpt.inspection_number = mel.report_key
WHERE rpt.status='1' OR rpt.status='0'
ORDER BY rpt.inspection_number DESC
Yo recibo mi rendimiento esperado que es
key | role | region | inspection_type | inspection_number | shipper | po | commodity | label
3 | NULL | Seattle | melons | 5555 | Shipper1 | PO2 | Commodity2 | Label2
2 | NULL | Seattle | berries | 1023 | Shipper1 | PO1 | Commodity1 | Label1
Si embargo elimino LEFT JOIN melons mel ON rpt.inspection_number = mel.report_key
de mi declaración me da exactamente lo mismo .... Nunca mencioné melons
??
Si yo utilizo revisar y JOIN
lugar para las bayas
SELECT
rpt.*,
ber.shipper, ber.po, ber.commodity, ber.label
FROM reports rpt
JOIN berries ber ON rpt.inspection_number = ber.report_key
WHERE rpt.status='1' OR rpt.status='0'
ORDER BY rpt.inspection_number DESC
Se produce lo que se esperaba que debe!
key | role | region | inspection_type | inspection_number | shipper | po | commodity | label
2 | NULL | Seattle | berries | 1023 | Shipper1 | PO1 | Commodity1 | Label1
Pero tratar de revisar mi declaración SQL como tal ....
SELECT
rpt.*,
ber.shipper, ber.po, ber.commodity, ber.label
mel.shipper, mel.po, mel.commodity, mel.label
FROM reports rpt
JOIN berries ber ON rpt.inspection_number = ber.report_key
JOIN melons mel ON rpt.inspection_number = mel.report_key
WHERE rpt.status='1' OR rpt.status='0'
ORDER BY rpt.inspection_number DESC
me Nets ....
MySQL returned an empty result set (i.e. zero rows). (Query took 0.0011 sec)
me da el gran dedo medio. ¿Que demonios? ¿Alguien puede explicar lo que estoy evidentemente haciendo mal, y cómo solucionarlo?
¿Tendría sentido tener bayas y melones en la misma mesa? –
Ojalá pudiera, pero en realidad tenemos alrededor de 12 tipos de frutas, que todas tienen sus propios campos separados. Tratar de unirlos, y recurrir a ellos sería una pesadilla ... ¡Buena pregunta! – ehime
Creo que obtendrás los mismos resultados con y sin el 'LEFT JOIN' para' mel', pero no creo tus resultados. Las columnas 'shipper',' po' y otras 'ber' serían NULL para cada fila de melón. –