🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: chile.comp.programacion
10 messages
10 total messages Started by Rickoj Fri, 04 Aug 2006 20:23
problema join con mysql
#1472
Author: Rickoj
Date: Fri, 04 Aug 2006 20:23
26 lines
1913 bytes
tengo las siguientes tablas
CREATE TABLE `clientes` (
  `rut` int(9) NOT NULL,
  `ap_paterno` varchar(50) NOT NULL,
  `ap_matern` varchar(50) NOT NULL,
  `nombres` varchar(100) NOT NULL,
  `compra` varchar(10) NOT NULL,
  UNIQUE KEY `rut` (`rut`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `productos` (
  `rut` int(9) NOT NULL,
  `items` varchar(1) NOT NULL,
  // otros campos//
 UNIQUE KEY `rut` (`rut`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

y la siguiente sentencia sql
SELECT `ap_paterno`,`ap_matern`,`clientes`.`rut`,`items`
FROM clientes c join productos p
WHERE c.rut=p.rut and c.compra='efectuada'

mysql responde "rut is ambigous" por que el rut es el mismo en ambas tablas
se que si hago select * from.... funciona
el asunto es que no me interesa rescatar los "otros campos", ahora podria 
rescatarlos y no despleglarlos pero no es la idea
Re: problema join con mysql
#1473
Author: Mauricio Gómez
Date: Fri, 04 Aug 2006 20:36
37 lines
2033 bytes
y c.rut en vez de clientes.rut en el select?


rro



Rick_oj escribi�:
> tengo las siguientes tablas
> CREATE TABLE `clientes` (
>   `rut` int(9) NOT NULL,
>   `ap_paterno` varchar(50) NOT NULL,
>   `ap_matern` varchar(50) NOT NULL,
>   `nombres` varchar(100) NOT NULL,
>   `compra` varchar(10) NOT NULL,
>   UNIQUE KEY `rut` (`rut`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
> 
> CREATE TABLE `productos` (
>   `rut` int(9) NOT NULL,
>   `items` varchar(1) NOT NULL,
>   // otros campos//
>  UNIQUE KEY `rut` (`rut`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
> 
> y la siguiente sentencia sql
> SELECT `ap_paterno`,`ap_matern`,`clientes`.`rut`,`items`
> FROM clientes c join productos p
> WHERE c.rut=p.rut and c.compra='efectuada'
> 
> mysql responde "rut is ambigous" por que el rut es el mismo en ambas tablas
> se que si hago select * from.... funciona
> el asunto es que no me interesa rescatar los "otros campos", ahora podria 
> rescatarlos y no despleglarlos pero no es la idea
> 
> 
> 
Re: problema join con mysql
#1474
Author: Mauricio Gómez
Date: Fri, 04 Aug 2006 20:37
35 lines
2029 bytes
y c.rut en vez de clientes.rut en el select?

rro


Rick_oj escribi�:
> tengo las siguientes tablas
> CREATE TABLE `clientes` (
>   `rut` int(9) NOT NULL,
>   `ap_paterno` varchar(50) NOT NULL,
>   `ap_matern` varchar(50) NOT NULL,
>   `nombres` varchar(100) NOT NULL,
>   `compra` varchar(10) NOT NULL,
>   UNIQUE KEY `rut` (`rut`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
> 
> CREATE TABLE `productos` (
>   `rut` int(9) NOT NULL,
>   `items` varchar(1) NOT NULL,
>   // otros campos//
>  UNIQUE KEY `rut` (`rut`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
> 
> y la siguiente sentencia sql
> SELECT `ap_paterno`,`ap_matern`,`clientes`.`rut`,`items`
> FROM clientes c join productos p
> WHERE c.rut=p.rut and c.compra='efectuada'
> 
> mysql responde "rut is ambigous" por que el rut es el mismo en ambas tablas
> se que si hago select * from.... funciona
> el asunto es que no me interesa rescatar los "otros campos", ahora podria 
> rescatarlos y no despleglarlos pero no es la idea
> 
> 
> 
Re: problema join con mysql
#1475
Author: Rickoj
Date: Fri, 04 Aug 2006 21:37
42 lines
2285 bytes
"Mauricio G�mez" <pregunte@sileinteresa.com> escribi� en el mensaje 
news:eb0dgi$2b6$1@news.nivel5.cl...
>y c.rut en vez de clientes.rut en el select?

pero c.rut no lo tomaria ya que el alias lo estoy escribiendo en el from
a menos que vea con un as
voy a intentar pero creo que ya lo hbaia hecho

> rro
>
>
> Rick_oj escribi�:
>> tengo las siguientes tablas
>> CREATE TABLE `clientes` (
>>   `rut` int(9) NOT NULL,
>>   `ap_paterno` varchar(50) NOT NULL,
>>   `ap_matern` varchar(50) NOT NULL,
>>   `nombres` varchar(100) NOT NULL,
>>   `compra` varchar(10) NOT NULL,
>>   UNIQUE KEY `rut` (`rut`)
>> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
>>
>> CREATE TABLE `productos` (
>>   `rut` int(9) NOT NULL,
>>   `items` varchar(1) NOT NULL,
>>   // otros campos//
>>  UNIQUE KEY `rut` (`rut`)
>> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
>>
>> y la siguiente sentencia sql
>> SELECT `ap_paterno`,`ap_matern`,`clientes`.`rut`,`items`
>> FROM clientes c join productos p
>> WHERE c.rut=p.rut and c.compra='efectuada'
>>
>> mysql responde "rut is ambigous" por que el rut es el mismo en ambas 
>> tablas
>> se que si hago select * from.... funciona
>> el asunto es que no me interesa rescatar los "otros campos", ahora podria 
>> rescatarlos y no despleglarlos pero no es la idea
>>
>> 
Re: problema join con mysql
#1476
Author: Andres E. Hernando
Date: Sat, 05 Aug 2006 00:53
43 lines
2036 bytes
In Fri, 4 Aug 2006 17:37:47 -0400, Rick_oj wrote: 
> 
> "Mauricio G�mez" <pregunte@sileinteresa.com> escribi� en el mensaje 
> news:eb0dgi$2b6$1@news.nivel5.cl...
>>y c.rut en vez de clientes.rut en el select?
> 
> pero c.rut no lo tomaria ya que el alias lo estoy escribiendo en el from
> a menos que vea con un as
> voy a intentar pero creo que ya lo hbaia hecho
> 
	
	Deberia funcionar igual. Tu problema es con el JOIN que esta 
incompleto (no tiene regla de como deben unirse los campos de ambas
tablas). Segun san yo, debiera ser asi:

SELECT `ap_paterno`,...
FROM    clientes c JOIN productos p ON c.rut=p.rut
WHERE   c.compra = 'efectuada';

	Saludos,
	AHG.



>>> y la siguiente sentencia sql
>>> SELECT `ap_paterno`,`ap_matern`,`clientes`.`rut`,`items`
>>> FROM clientes c join productos p
>>> WHERE c.rut=p.rut and c.compra='efectuada'
>>>
>>> mysql responde "rut is ambigous" por que el rut es el mismo en ambas 
>>> tablas
>>> se que si hago select * from.... funciona
>>> el asunto es que no me interesa rescatar los "otros campos", ahora podria 
>>> rescatarlos y no despleglarlos pero no es la idea
>>>
>>> 
> 

-- 
Wanda the fish says:
Hear that...
	the Pope's next pronouncement on birth control is to be titled
	"Paul's Epistle to the Fallopians"?
Re: problema join con mysql
#1478
Author: Jos� Miguel Santib��ez
Date: Sat, 05 Aug 2006 04:53
41 lines
2735 bytes
En el cap�tulo anterior (news:eb0aea$1bh$1@news.nivel5.cl), "Rick_oj"
<rick_oj@[sin-esto]tutopia.com> dijo: 

> tengo las siguientes tablas
> CREATE TABLE `clientes` (
>   `rut` int(9) NOT NULL,
>   `ap_paterno` varchar(50) NOT NULL,
>   `ap_matern` varchar(50) NOT NULL,
>   `nombres` varchar(100) NOT NULL,
>   `compra` varchar(10) NOT NULL,
>   UNIQUE KEY `rut` (`rut`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
> 
> CREATE TABLE `productos` (
>   `rut` int(9) NOT NULL,
>   `items` varchar(1) NOT NULL,
>   // otros campos//
>  UNIQUE KEY `rut` (`rut`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
> 
> y la siguiente sentencia sql
> SELECT `ap_paterno`,`ap_matern`,`clientes`.`rut`,`items`
> FROM clientes c join productos p
> WHERE c.rut=p.rut and c.compra='efectuada'
> 
> mysql responde "rut is ambigous" por que el rut es el mismo en ambas
> tablas se que si hago select * from.... funciona
> el asunto es que no me interesa rescatar los "otros campos", ahora
> podria rescatarlos y no despleglarlos pero no es la idea
> 

tu mismo te das la respuesta: el rut del select es el que causa ambiguedad 
(a�n cuando debieran ser iguales)... Por lo tanto debes decidir cual de los 
dos es el que quieres c.rut o p.rut (ya que tienes los alias, que dicho sea 
de paso, creo que no se justifican para nada, al igual que la palabra join, 
que reemplazar�a por una coma).

-- 
Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
Re: problema join con mysql
#1479
Author: Andres E. Hernando
Date: Sat, 05 Aug 2006 14:51
24 lines
1785 bytes
In 5 Aug 2006 00:53:38 -0400, "Jos� Miguel Santib��ez" wrote: 
> 
> tu mismo te das la respuesta: el rut del select es el que causa ambiguedad 
> (a�n cuando debieran ser iguales)... Por lo tanto debes decidir cual de los 
> dos es el que quieres c.rut o p.rut (ya que tienes los alias, que dicho sea 
> de paso, creo que no se justifican para nada, al igual que la palabra join, 
> que reemplazar�a por una coma).

	Que es mas eficiente? Hacer el producto cruz entre
las tablas filtrando despues (i.e. FROM a,b WHERE a.xxx=b.xxx) o
hacer el join entre ambas (i.e. FROM a JOIN b ON a.xxx=b.xxx)?

	Pregunto super en buena onda, yo fui a los cursos de
bases de datos a puro machucar el membrillo (no es cierto,
igual aprendi un buen poco de SQL, pero estas cosas, o se me
escaparon, o las olvide una vez aprobado el curso).

	Saludos,
	AHG.

-- 
Wanda the fish says:
Our swords shall play the orators for us.
		-- Christopher Marlowe
Re: problema join con mysql
#1480
Author: Rickoj
Date: Sat, 05 Aug 2006 18:16
50 lines
3162 bytes
"Jos� Miguel Santib��ez" <jms.nospam@nivel5.cl> escribi� en el mensaje 
news:Xns9816122D877E0jmsnews@200.27.221.71...
> En el cap�tulo anterior (news:eb0aea$1bh$1@news.nivel5.cl), "Rick_oj"
> <rick_oj@[sin-esto]tutopia.com> dijo:
>
>> tengo las siguientes tablas
>> CREATE TABLE `clientes` (
>>   `rut` int(9) NOT NULL,
>>   `ap_paterno` varchar(50) NOT NULL,
>>   `ap_matern` varchar(50) NOT NULL,
>>   `nombres` varchar(100) NOT NULL,
>>   `compra` varchar(10) NOT NULL,
>>   UNIQUE KEY `rut` (`rut`)
>> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
>>
>> CREATE TABLE `productos` (
>>   `rut` int(9) NOT NULL,
>>   `items` varchar(1) NOT NULL,
>>   // otros campos//
>>  UNIQUE KEY `rut` (`rut`)
>> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
>>
>> y la siguiente sentencia sql
>> SELECT `ap_paterno`,`ap_matern`,`clientes`.`rut`,`items`
>> FROM clientes c join productos p
>> WHERE c.rut=p.rut and c.compra='efectuada'
>>
>> mysql responde "rut is ambigous" por que el rut es el mismo en ambas
>> tablas se que si hago select * from.... funciona
>> el asunto es que no me interesa rescatar los "otros campos", ahora
>> podria rescatarlos y no despleglarlos pero no es la idea
>>
>
> tu mismo te das la respuesta: el rut del select es el que causa ambiguedad
> (a�n cuando debieran ser iguales)... Por lo tanto debes decidir cual de 
> los
> dos es el que quieres c.rut o p.rut (ya que tienes los alias, que dicho 
> sea
> de paso, creo que no se justifican para nada, al igual que la palabra 
> join,
> que reemplazar�a por una coma).

pero si elijo c.rut o p.rut continua entregando errores, lo que finalmente 
hice fue select * al final, y mostre en pantalla con $row_resultados['rut']
ahora lo del join es por que asi me lo ense�aron cuando vi bdd a�os atras, 
el alias es para no poner clientes.rut, se que no es la mejor sucion pero no 
se por que no me entrega el valor que deberia, si seleccionara solo `rut` es 
claro que responde ambiguo pero lo estoy seleccionando indicandole desde que 
tabla
Re: problema join con mysql
#1481
Author: Mauricio Gomez
Date: Sat, 05 Aug 2006 19:38
43 lines
2134 bytes
Rick_oj escribi�:
> 
> pero si elijo c.rut o p.rut continua entregando errores, lo que finalmente 
> hice fue select * al final...

Me piqu� :p


mysql> select * from clientes;
+-----+------------+-----------+----------+-----------+
| rut | ap_paterno | ap_matern | nombres  | compra    |
+-----+------------+-----------+----------+-----------+
| 111 | ap1        | am1       | nombres1 |           |
| 222 | ap2        | am2       | nombres2 | efectuada |
+-----+------------+-----------+----------+-----------+
2 rows in set (0.00 sec)

mysql> select * from productos;
+-----+-------+
| rut | items |
+-----+-------+
| 111 | A     |
| 222 | B     |
+-----+-------+
2 rows in set (0.00 sec)

mysql> SELECT `ap_paterno`,`ap_matern`,c.`rut`,`items`
     -> FROM clientes c join productos p
     -> WHERE c.rut=p.rut and c.compra='efectuada';
+------------+-----------+-----+-------+
| ap_paterno | ap_matern | rut | items |
+------------+-----------+-----+-------+
| ap2        | am2       | 222 | B     |
+------------+-----------+-----+-------+
1 row in set (0.00 sec)

mysql>





rro
Re: problema join con mysql
#1482
Author: Rickoj
Date: Sat, 05 Aug 2006 19:49
45 lines
2489 bytes
"Mauricio Gomez" <pregunte@sileinteresa.com> escribi� en el mensaje 
news:eb2s35$r31$1@news.nivel5.cl...
> Rick_oj escribi�:
>>
>> pero si elijo c.rut o p.rut continua entregando errores, lo que 
>> finalmente hice fue select * al final...
>
> Me piqu� :p
>
>
> mysql> select * from clientes;
> +-----+------------+-----------+----------+-----------+
> | rut | ap_paterno | ap_matern | nombres  | compra    |
> +-----+------------+-----------+----------+-----------+
> | 111 | ap1        | am1       | nombres1 |           |
> | 222 | ap2        | am2       | nombres2 | efectuada |
> +-----+------------+-----------+----------+-----------+
> 2 rows in set (0.00 sec)
>
> mysql> select * from productos;
> +-----+-------+
> | rut | items |
> +-----+-------+
> | 111 | A     |
> | 222 | B     |
> +-----+-------+
> 2 rows in set (0.00 sec)
>
> mysql> SELECT `ap_paterno`,`ap_matern`,c.`rut`,`items`
>     -> FROM clientes c join productos p
>     -> WHERE c.rut=p.rut and c.compra='efectuada';
> +------------+-----------+-----+-------+
> | ap_paterno | ap_matern | rut | items |
> +------------+-----------+-----+-------+
> | ap2        | am2       | 222 | B     |
> +------------+-----------+-----+-------+
> 1 row in set (0.00 sec)
>
> mysql>

ahi ta la madre del cordero estaba intentando con `clientes`.`rut`
claro que con la comilla rsulto sin ella arrojaba error como resultado como 
dije antes
gracias
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads