Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/05/2013, 07:27
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta a dos Tablas

Vamos a ver si se entiende por qué te dije que esa consulta está muy mal escrita, y neecsitas volver a leer los manuales:
- Primero dices que estás juntando dos consultas en una, cada una de las cuales funciona bien por separado.
No puedes juntar dos consultas diferentes en una de cualquier forma. Sólo existen dos formas JOIN y UNION, y no estás usando ninguna.
Código MySQL:
Ver original
  1. SELECT DISTINCT`post_title`
  2. FROM `wp_posts`
  3. WHERE post_status = 'publish'
  4.  
  5.  
  6. SELECT /* Y los campos?*/
  7. FROM 'wp_custom_post_fields'  /* Esto tiene apostrofos. Por qué?*/
  8. WHERE site_title = 'Todos los discos'
  9. ORDER BY post_date DESC

- Luego, estás usando apóstrofos (') para el nombre de una tabla, lo que hace que MySQL lo tome como cadena de texto, y no como tabla. Los nombres de objetos pueden encerrarse con acentos agudos (`) no apóstrofos.

- Estás usando un AND donde tal vez corresponda un UNION, pero un UNION requiere dos consultas con la misma cantidad de campos, del mismo tipo y en el mismo orden... y tu segundo SELECT no tiene ningún campo indicado.
¿Donde has visto un SELECT que no indique campos, al menos en forma general (*)? No existe eso.

Lo mires por donde lo mires, esa consulta simplemente no funcionará y te devolverá error de sintaxis.
Siempre.

Para resolverlo:
1) Si quieres los resultados de la primera y agregados los de la segunda, ambas consultas deben unirse con UNION y deben invocar la misma cantidad de campos, del mismo tipo y en el mismo orden.

2) Si cada registro de la primera está relacionado con uno o más de la segunda tabla, debes usar JOIN, indicando qué campo de la primera se relaciona con qué campo de la segunda. Para eso necesitamos saber cómo es la estructura y relaciones de ambas tablas.

El primer caso sería:
Código MySQL:
Ver original
  1. SELECT DISTINCT`post_title`
  2. FROM `wp_posts`
  3. WHERE post_status = 'publish'
  4. SELECT post_title
  5. FROM wp_custom_post_fields
  6. WHERE site_title = 'Todos los discos'
  7. ORDER BY post_date DESC

El segundo sería mas o menos:
Código MySQL:
Ver original
  1. SELECT DISTINCT wp.post_title, wf.camposegundatabla
  2. FROM `wp_posts` wp INNER JOIN wp_custom_post_fields wf ON wp.campoFK = wf.campoPK
  3. WHERE post_status = 'publish' AND  wf.site_title = 'Todos los discos'
  4. ORDER BY post_date DESC

Por supuesto, necesitamos mejor información para saber lo que hay que escribir, pero lo que te muestro ya te puede dar una idea de lo mal escrita que está tu consulta...

Suerte.



PD: Una sugerencia. Descarga el MySQL Workbench de la web oficial de MySQL y usalo para escribir las consultas. Tiene un analizador sintáctico que te marcará los errores que existan, lo que te evitará por lo menos este tipo de contingencias.

Y usa el manual de referencia. Nadie conoce todo (no, tampoco nosotros), y todos usamos los manuales. Hasta los DBA con titulo y 20 años de experiencia... (yo no tengo tantos, pero tengo bastantes)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 01/05/2013 a las 07:32