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

SELECT varias tablas error

Estas en el tema de SELECT varias tablas error en el foro de Mysql en Foros del Web. Buenas noches foreros, tengo esta consulta que me da error, ¿que ven ustedes mal? MUchas garcias. Código: SELECT * FROM pacu,paves,pgatos,pperros WHERE oferta=1 ORDER BY ...
  #1 (permalink)  
Antiguo 29/11/2010, 18:39
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
SELECT varias tablas error

Buenas noches foreros, tengo esta consulta que me da error, ¿que ven ustedes mal?
MUchas garcias.

Código:
SELECT * FROM pacu,paves,pgatos,pperros WHERE oferta=1 ORDER BY fecha
  #2 (permalink)  
Antiguo 29/11/2010, 18:40
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: SELECT varias tablas error

y que dice el error??
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #3 (permalink)  
Antiguo 29/11/2010, 18:51
 
Fecha de Ingreso: noviembre-2010
Ubicación: mexico
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: SELECT varias tablas error

Cita:
Iniciado por mariomon17 Ver Mensaje
Buenas noches foreros, tengo esta consulta que me da error, ¿que ven ustedes mal?
MUchas garcias.

Código:
SELECT * FROM pacu,paves,pgatos,pperros WHERE oferta=1 ORDER BY fecha
creo que estas haciendo mal la consulta si lo que quieres son campos de varias tablas
pienso que deberia ser asi

SELECT
tabla1.campo1, tabla1.campo2, tabla2.campo1, tabla2.campo2
FROM
tabla1,
tabla2,

WHERE
tabla1.campo1 = tabla2.campo1

donde seleccionas los campos que quieras obtener de cada una de las tablas
  #4 (permalink)  
Antiguo 29/11/2010, 18:54
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: SELECT varias tablas error

Cita:
Iniciado por macu123 Ver Mensaje
creo que estas haciendo mal la consulta
pienso que deberia ser asi

SELECT
tabla1.campo1, tabla1.campo2, tabla2.campo1, tabla2.campo2
FROM
tabla1,
tabla2,

WHERE
tabla1.campo1 = tabla2.campo1
bueno viendolo asi creo que tienes razon...
talvez cuando el indica el campo oferta en la clausula WHERE esecampo no existe en todas las tablas..
de todas maneras asi seguiriamos adivinando, quisiera saber que dice el error desde PhpMyAdmin...

Aunque viendo esto... que tiene que ver con PHP??
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #5 (permalink)  
Antiguo 29/11/2010, 19:06
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 3 meses
Puntos: 26
Respuesta: SELECT varias tablas error

$asdf="SELECT * FROM pacu,paves,pgatos,pperros WHERE oferta=1 ORDER BY fecha" or die(mysql_error());

agregale eso a tu consulta y podras ver el error que tira.
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #6 (permalink)  
Antiguo 29/11/2010, 19:42
 
Fecha de Ingreso: agosto-2010
Mensajes: 24
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: SELECT varias tablas error

SELECT * FROM pacu, paves, pgatos, pperros WHERE pacu.oferta= ('1') AND paves.oferta= ('1') AND pgatos.oferta= ('1') AND pperros.oferta= ('1') ORDER BY pacu.fecha ASC

O desc si lo queres decreciente
  #7 (permalink)  
Antiguo 29/11/2010, 21:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Tema movido desde PHP a Mysql
  #8 (permalink)  
Antiguo 30/11/2010, 10:09
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Este es el error que me da
Código MySQL:
Ver original
  1. Column 'oferta' in where clause is ambiguous
La columna oferta existe en todas las tablas, es de tipo int(1) y los valores que tiene son 1 o 0.

Lo que quiero es que me coja todos los productos de esas tablas que tenga oferta = 1 y que me los de ordenados por fecha.

Gracias a todos por las respuestas.
  #9 (permalink)  
Antiguo 30/11/2010, 10:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: SELECT varias tablas error

El problema es que estas llamando un campo que tiene el mismo nombre en varias tablas que llamas en la consulta.
Dice que es ambiguo, ya que no sabe que campo y de que tabla debe hacerse el where.

la solución es facil, debes anteponer el nombre de la tabla donde se encuentra oferta.

WHERE tabla.oferta='lo que quieras'

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #10 (permalink)  
Antiguo 30/11/2010, 10:54
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Lo probe y no me da error pero no me devuelve registros.

Y si utilizo este metodo en ORDER BY que pongo?
  #11 (permalink)  
Antiguo 30/11/2010, 10:57
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: SELECT varias tablas error

eso ya es un problema de como llamas tus datos.

En el order by es exactamente igual.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #12 (permalink)  
Antiguo 30/11/2010, 11:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Pero si el ORDER BY es igual como especifico que de todas las tablas lo ordeno, porque si pongo
ORDER BY pacu.fecha ASC ¿los del resto de tablas?

¿problema de como llamo mis datos? ¿aq te refieres?
Un saludo!
  #13 (permalink)  
Antiguo 30/11/2010, 12:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: SELECT varias tablas error

marionmon.... la verdad no se lo que quieres hacer con el order by.

con el comentario de llamada a los datos, me refiero a en la consulta debes tener algo que evite mostrar los datos que con seguridad no tiene que ver con la solución que te doy.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #14 (permalink)  
Antiguo 30/11/2010, 12:20
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: SELECT varias tablas error

Cita:
Iniciado por mariomon17 Ver Mensaje
Pero si el ORDER BY es igual como especifico que de todas las tablas lo ordeno, porque si pongo
ORDER BY pacu.fecha ASC ¿los del resto de tablas?
!
si haces eso pss te va a ordenar en orden ascendente lo que halla en pacu.fecha el resto se ordena segun se ordene pacu.fecha
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #15 (permalink)  
Antiguo 30/11/2010, 12:43
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Os describo: tengo 4 tablas (pacu,paves,pgatos,pperros) donde guardo los productos de cada tipo.
En cada tabla hay una columna llamada oferta (int) que puede ser 1 0 0.

Lo que quiero es seleccionar todos los productos de las cuatro tablas que tengan oferta=1. Estos datos los quiero ordenar por la fecha de inserccion en la BD. Los mas nuevos primero, pero los mas nuevo de las 4 tablas no solo los de pacu. Entendisteis?

Muchas Gracias a los dos!

Última edición por mariomon17; 30/11/2010 a las 16:45
  #16 (permalink)  
Antiguo 02/12/2010, 08:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Nadie sabe como lo puedo hacer?
Os lo agradeceria mucho!
  #17 (permalink)  
Antiguo 02/12/2010, 09:00
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: SELECT varias tablas error

Saludos

Los compañeros fororeros te han dado la respuesta anteriormente. Cuando ocurre ese error es por la consulta se "pierde" por que encuentra una columna repetida en mas de una tabla y no sabe sobre cual hacer la operacion. Es por eso que te indica macu123 que manejes un alias sobre cada tabla y dentro del select tambien indiques cada columna a que tabla pertenece.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #18 (permalink)  
Antiguo 02/12/2010, 09:04
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Ya, si ya dije que probe:
SELECT * FROM pacu, paves, pgatos, pperros WHERE pacu.oferta= ('1') AND paves.oferta= ('1') AND pgatos.oferta= ('1') AND pperros.oferta= ('1') ORDER BY pacu.fecha ASC
y no me devolvio registros.
  #19 (permalink)  
Antiguo 02/12/2010, 09:05
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: SELECT varias tablas error

Saludos

Simplemente es por q esta mal!

Las tablas por que campo se relacionan? y como es la estructura de las tablas?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #20 (permalink)  
Antiguo 02/12/2010, 09:06
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: SELECT varias tablas error

No estoy seguro, pero talvez la clausula group by
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #21 (permalink)  
Antiguo 02/12/2010, 09:10
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Lo conte arriba: Os describo: tengo 4 tablas (pacu,paves,pgatos,pperros) donde guardo los productos de cada tipo.
En cada tabla hay una columna llamada oferta (int) que puede ser 1 0 0.

Lo que quiero es seleccionar todos los productos de las cuatro tablas que tengan oferta=1. Estos datos los quiero ordenar por la fecha de inserccion en la BD. Los mas nuevos primero, pero los mas nuevo de las 4 tablas no solo los de pacu.
---------------
Las tablas no estan relacionadas de ningun modo.
Un saludo y gracias a los dos.
  #22 (permalink)  
Antiguo 02/12/2010, 09:19
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: SELECT varias tablas error

Ok Entiendo

Prueba de la siguiente manera

Código MySQL:
Ver original
  1. SELECT oferta,fecha FROM pacu WHERE  oferta= '1'
  2. SELECT oferta,fecha FROM paves WHERE  oferta= '1'
  3. SELECT oferta,fecha FROM pgatos WHERE  oferta= '1'
  4. SELECT oferta,fecha FROM pperros WHERE  oferta= '1'
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #23 (permalink)  
Antiguo 02/12/2010, 09:45
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: SELECT varias tablas error

silo que haces es un select * from tabla_uno, tabla_dos
estas haciendo un producto cartesiano, no es lo que requieres, usa un union

select * from pacu
union
select * from paves
union
select * from pgatos
order by
fecha ASC


cuando empece a editar el mensaje no estaba el post anterior, y creo que me distraje con otras cosa, coincidimos
  #24 (permalink)  
Antiguo 02/12/2010, 11:03
 
Fecha de Ingreso: noviembre-2010
Ubicación: mexico
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: SELECT varias tablas error

Cita:
Iniciado por mariomon17 Ver Mensaje
Ya, si ya dije que probe:
SELECT * FROM pacu, paves, pgatos, pperros WHERE pacu.oferta= ('1') AND paves.oferta= ('1') AND pgatos.oferta= ('1') AND pperros.oferta= ('1') ORDER BY pacu.fecha ASC
y no me devolvio registros.


cpomo te habia dicho
tu consulta dberia quedar asi

SELECT pacu.oferta,(aqui debe indicar que campos y de que tablas la quieres ve el ejemplo que puse arriba)

WHERE pacu.oferta='1' AND paves.oferta='1';
  #25 (permalink)  
Antiguo 02/12/2010, 12:36
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Muchisimas gracias a todos! Lo solucione asi:

Código MySQL:
Ver original
  1. SELECT * FROM pacu WHERE  oferta= '1'
  2. SELECT * FROM paves WHERE  oferta= '1'
  3. SELECT * FROM pgatos WHERE  oferta= '1'
  4. SELECT * FROM pperros WHERE  oferta= '1'

Funciona a la perfeccion.
  #26 (permalink)  
Antiguo 05/12/2010, 16:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: SELECT varias tablas error

Una pregunta ¿luego al mostrar los registros hay alguna funcion que me diga de que tabla proviene el registro?

Gracias
  #27 (permalink)  
Antiguo 06/12/2010, 05: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, 4 meses
Puntos: 2658
Respuesta: SELECT varias tablas error

No, porque tu tabla es una tabla virtual producto de una consulta.
Lo que te conviene en ese caso es crear un modelo algo diferente, donde el ID esté compuesto también por un campo permita identificar eso, precisamente.
Técnicamente hablando, si tienes una serie de tablas que contiene los mismos campos pero dedicados a diferentes animales, lo que te convendría es haber creado una sola tabla "ANIMAL" o "MASCOTA", con un campo que permita identificar el grupo animal al que pertenece; de esa forma no solamente habrías tenido menos problemas, sino que hubieses creado un modelo mucho más flexible y que con consultas menos complejas devolviesen m´sa información, como el caso de lo que estás pidiendo.
__________________
¿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: select, 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 20:52.