¿Cómo puedo obtener todos los valores de campo de una consulta con las tablas combinadas?

StackOverflow https://stackoverflow.com/questions/1492418

  •  18-09-2019
  •  | 
  •  

Pregunta

Tengo primaria de la consulta:

SELECT d.description, o.code FROM order_positions AS o
LEFT JOIN article_descriptions AS d ON (o.article_id = d.article_id)
WHERE o.order_id = 1

y estoy usando MDB2 de PEAR para ejecutar y leer los valores de retorno.

Pero de alguna manera la matriz de resultado siempre contiene los campos de la order_positions tabla sólo!, es decir,el resultado de la matriz se parece a esto

row[code] = 'abc123'

mientras yo quiero ver como esta

row[description] = 'my description'
row[code] = 'abc123'

Ya he intentado lo siguiente:

  • Variar el orden de los campos, es decir, code en primer lugar, a continuación, description.
  • Variar el orden de las tablas combinadas.
  • Utilizado completa de los nombres de tabla en lugar de alias.
  • Utiliza el "MySQL unirse" en lugar de (SELECT FROM table1, table2 WHERE table1.id = table2.id)
  • Alias utilizados con y sin AS.

Algunos otros hechos:

  • La ejecución de esta consulta en MySQL Query Browser funciona bien, se devuelven todos los campos.
  • El order_positions tabla parece ser el preferido, no importa qué.Cuando se une con tablas adicionales todavía sólo obtener los campos de esta tabla.
¿Fue útil?

Solución

OK, he encontrado la causa:

Los campos con NULL los valores no se agrega a la matriz.En mi escenario de prueba description de hecho fue nulo y, por tanto, no estaba disponible en la matriz.

Voy a mantener este (vergonzoso) de la pregunta, en caso de que alguien más tiene este problema en el futuro.

Facepalm http://www.scienceblogs.de/frischer-wind/picard-facepalm-thumb-512x409.jpg

Otros consejos

Esto debería funcionar:

SELECT d.description, o.code 
FROM order_positions o, article_descriptions d 
WHERE o.order_id = 1 AND d.article_id = o.article_id

Está usted seguro de que no estés usando fetchOne() por error en lugar de fetchRow()?

Podría publicar su código PHP?

Otra posibilidad es que en el código que te perdiste de la coma:

SELECT a b

es el mismo

SELECT a AS b
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top