Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Consulta con varias tablas relacionadas

Estas en el tema de Consulta con varias tablas relacionadas en el foro de Mysql en Foros del Web. Hola, tengo un error en mi consulta con varias tablas (#1066 - Not unique table/alias: 'pedidos'), según lo que consulté es por un alias de ...
  #1 (permalink)  
Antiguo 25/07/2014, 07:27
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta Consulta con varias tablas relacionadas

Hola, tengo un error en mi consulta con varias tablas (#1066 - Not unique table/alias: 'pedidos'), según lo que consulté es por un alias de la tabla que no hay que repetir... quisiera una ayuda en como colocar la consulta, la sintaxis... pues aparte no domino mucho lo del INNER JOIN y también según lo que pude consultar este es necesario para ordenar bien el resultado de la consulta que quiero... este es el código que pude hacer hasta el momento:


Código MySQL:
Ver original
  1. SELECT `pedidos`.`nopedido`, `empresas`.`nomempresa`, `proyectos`.`nomproyecto`
  2. FROM pedidos, empresas, proyectos, contenidopedidos INNER JOIN `pedidos`
  3. WHERE `pedidos`.`nopedido`=`contenidopedido`.`nopedido` and `empresas`.`nomempresa`=`proyectos.idempresa` and `proyectos`.`noproyecto`=`pedidos`.`noproyecto`
__________________________________________________ __________

NOTA: esto es en phpmyadmin, me corrigen también si me equivoco en algun signo, u orden... se los agradeceria mucho...
  #2 (permalink)  
Antiguo 25/07/2014, 07:37
Avatar de 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 con varias tablas relacionadas

Cita:
#1066 - Not unique table/alias: 'pedidos'
Pues el problema es simple: No estás usando NINGUN alias, y encima estás entremezclando JOINs implícitos con explicitos, lo que es muy mala idea. En ocasiones los resultados son impredecibles.

DE todos modos, no se entiende para qué invocas dos veces esa tabla, cuando en realidad solo la indicas una vez en las relaciones...
Código MySQL:
Ver original
  1.     P.`nopedido`,
  2.     E.`nomempresa`,
  3.     PR.`nomproyecto`
  4.     pedidos P
  5.     INNER JOIN contenidopedidos CP ON P.`nopedido`= CP.`nopedido`
  6.     INNER JOIN proyectos PR ON P.`noproyecto`=PR.`noproyecto`
  7.     INNER JOIN empresas E ON E.`nomempresa`= PR.`idempresa`
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/07/2014, 07:58
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Consulta con varias tablas relacionadas

Gracias amigo... no vi lo que me aclaraste por dejarme llevar por el desespero de ver ese error... gracias por el aporte!!! tomare tus codigos como apoyo... cualquier novedad te molesto de nuevo jejejeje.... mira lo que hice:
Cita:
SELECT `pedidos`.`nopedido`, `empresas`.`nomempresa`, `proyectos`.`nomproyecto`
FROM pedidos, empresas, proyectos
INNER JOIN `contenidopedido`
WHERE `pedidos`.`nopedido`=`contenidopedido`.`nopedido` and `empresas`.`nomempresa`=`proyectos`.`idempresa` and `proyectos`.`noproyecto`=`pedidos`.`noproyecto`
Ahora si me muestran los datos que necesito... que opinas al respecto... puede ser mejor el metodo? o así estará bien?...
  #4 (permalink)  
Antiguo 25/07/2014, 08:04
Avatar de 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 con varias tablas relacionadas

Dos consejos iniciales:
- No mezcles JOINs implícitos (la coma) con explícitos. Es mala idea y puede traer resultados impredecibles.
- Usa alias. Ayuda a mantener un código legible y fácil de depurar.

Vuelvo a ponerte mi ejemplo:
Código MySQL:
Ver original
  1.     P.`nopedido`,
  2.     E.`nomempresa`,
  3.     PR.`nomproyecto`
  4.     pedidos P
  5.     INNER JOIN contenidopedidos CP ON P.`nopedido`= CP.`nopedido`
  6.     INNER JOIN proyectos PR ON P.`noproyecto`=PR.`noproyecto`
  7.     INNER JOIN empresas E ON E.`nomempresa`= PR.`idempresa`
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 25/07/2014, 08:18
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Consulta con varias tablas relacionadas

Gracias, me motiva tu linea de códigos a aprender más como simplificar y odenar mejor las sintaxis... estoy en un proyecto en el que se necesitan varias cositas que no domino bien, y pues por eso prefiero confirmar todo por acá... Ojála cualquier duda puedas colaborarme... Feliz día!
  #6 (permalink)  
Antiguo 25/07/2014, 08:50
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Consulta con varias tablas relacionadas

Otra duda tu disculpa... probe en un php tu codigo y manda error más el mio sale enseguida... serán en la manera en que hago la consulta????
  #7 (permalink)  
Antiguo 25/07/2014, 08:56
Avatar de 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 con varias tablas relacionadas

Cita:
Otra duda tu disculpa... probe en un php tu codigo y manda error más el mio sale enseguida... serán en la manera en que hago la consulta????
Si no sé qué error da, es difícil contestarte...
¿Un error de PHP o de sintaxis en MySQL?

PHP es OFF-TOPIC en este foro, por lo que deberiamos tratar el tema en el de PHP.

Sintácticamente, lo que te pasé no tiene errores. Eso ya lo comprobé.
Si devuelve un error por columna incorrecta, habría que verificar los nombres de las que puse. Si no devuelve datos, es porque hay datos "sucios", o incorrectos, y estás usando tablas MyISAM, en lugar de InnoDB.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 25/07/2014, 09:24
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Consulta con varias tablas relacionadas

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in...
este es el error, y asi lo llamo...
Cita:
Editado: Código de programación no permitido en foros de BBDD. Leer las normas del foro, por favor.
  #9 (permalink)  
Antiguo 25/07/2014, 09:30
Avatar de 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 con varias tablas relacionadas

Ya te anticipé que eso es OFF TOPIC en este foro, y en todo caso debe tratarse en el foro de PHP.


Hagamos una cosa: Usando el phpMyadmin (que supongo tienes al alcance), ejecuta la query manualmente, y dime qué error te da, si es que te daa alguno.
Si no te da errores, pero tampoco devuelve datos, entonces tienes dos problemas: De datos y de programación.

Si devuelve datos, entonces tienes algún problema de programación que no estamos viendo, y deberemos resolverlo en el foro correspondiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 25/07/2014, 10:45
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Consulta con varias tablas relacionadas

dale... montare la inquietud en el foro PHP...
  #11 (permalink)  
Antiguo 25/07/2014, 10:56
Avatar de 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 con varias tablas relacionadas

Ajá... ¿Y probaste lo que te dije?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 25/07/2014, 12:53
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Consulta con varias tablas relacionadas

si... ya subi hasta el restante de la duda en el foro PHP... y pues todo sale excepto en la pagina... sera por los alias?...
  #13 (permalink)  
Antiguo 25/07/2014, 13:11
Avatar de 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 con varias tablas relacionadas

Obviamente que si los campos no son iguales que antes, debes hacer que la pagina tome los que devuelve ahora...
Aparte de eso, ya te hice una observación en el ese thread. Fijate.

De todos modos no me ahs respondido: ¿Probaste la query así en phpMyadmin:
Código MySQL:
Ver original
  1.     P.`nopedido`,
  2.     E.`nomempresa`,
  3.     PR.`nomproyecto`
  4.     pedidos P
  5.     INNER JOIN contenidopedidos CP ON P.`nopedido`= CP.`nopedido`
  6.     INNER JOIN proyectos PR ON P.`noproyecto`=PR.`noproyecto`
  7.     INNER JOIN empresas E ON E.`nomempresa`= PR.`idempresa`

No desde PHP, sino en el phpMyadmin...

¿Devuelve datos o devuelve algún error?

Ten en cuenta que yo no tengo tus tablas. No puedo probarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: phpmyadmin, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:47.