Comunidad de diseño web y desarrollo en internet online

consulta en varias tablas con mysql

Citar            
MensajeEscrito el 22 Feb 2007 05:05 am
hola necesito hacer una consulta en 3 tablas. tengo una tabla llamada empresas donde esta el id de la empresa y su nombre, una llamada ciudades que tiene el id de la ciudad y su nombre y tengo otra tabla donde relaciono las ciudades con las empresas y con mas datos asi



me dan el id de la ciudad por ejemplo 1 para la ciudad 1 y debo mostrar los nombres de las empresas que se encuentran en la ciudad 1 con su respectiva info de contacto telefono y email pero no se como hacer la consulta bien, creo que es con algo de INNER JOIN o con una subconsulta, alguien me puede aclarar bien de que forma se debe hacer?
GRACIAS. XD

Por chechopoker

91 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Feb 2007 12:54 pm
Hola,

podrías probar:

Código :

SELECT empresas.nombre, ciudades.nombre, terceratabla.contacto, terceratabla.telefono, terceratabla.email 
FROM empresas, ciudades, terceratabla 
WHERE ciudades.id=terceratabla.id_ciudad AND empresas.id=terceratabla.id_empresa


Creo que así debería funcionar bien...

Saludos!

PD: Sustituye terceratabla por el nombre que tengas tú, que no lo he visto cual tenia :wink:

Por dmvalverde

150 de clabLevel



Genero:Masculino  

Extremadura

opera
Citar            
MensajeEscrito el 22 Feb 2007 03:42 pm
gracias, con esto solucione mi problema por completo, eso era lo que necesitaba, muchas gracias XD

Por chechopoker

91 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Feb 2007 10:37 pm

Código :

SELECT empresas.nombre, ciudades.nombre, terceratabla.contacto, terceratabla.telefono, terceratabla.email 
FROM empresas
INNER JOIN ciudades
ON empresas.id=terceratabla.id_empresa
INNER JOIN terceratabla 
ON ciudades.id=terceratabla.id_ciudad

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 13 Mar 2011 08:45 am
Hola, antes que nada perdon por revivir un tema taaan viejo.

Les tengo una pregunta... que diferencia hay entre esta consulta con INNER JOIN:

Código :

SELECT empresas.nombre, ciudades.nombre, terceratabla.contacto, terceratabla.telefono, terceratabla.email 
FROM empresas
INNER JOIN ciudades
ON empresas.id=terceratabla.id_empresa
INNER JOIN terceratabla 
ON ciudades.id=terceratabla.id_ciudad


y esta otra SIN INNER JOIN:

Código :

SELECT empresas.nombre, ciudades.nombre, terceratabla.contacto, terceratabla.telefono, terceratabla.email 
FROM empresas, ciudades, terceratabla 
WHERE ciudades.id=terceratabla.id_ciudad AND empresas.id=terceratabla.id_empresa



Hay alguna diferencia en cuanto a rendimiento?, son iguales o no tienen nada en comun?

Saludos.

Por JOlmos

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2015 10:25 am
Buenos días amigos.
Estoy probando el ejemplo que comentáis para seleccionar datos de varias tablas pero no consigo buen resultado.

Mi sentencia es algo similar a esto:

$sentencia = "SELECT clientes.*, pedidos.* FROM clientes,pedidos WHERE pedidos.ref= '82';";

Debería de arrojarme el resultado de los datos de un solo cliente, es decir, el único que tiene un registro de la tabla pedidos con esa referencia, pero me da muchísimos registros (creo qque todos los que hay en la tabla clientes)...

Luego y como ejemplo, muestro los datos de mi cliente en pantalla con php de la siguiente forma:

while ($fila = mysql_fetch_object($result)) {
echo $fila->nombreCliente;
echo $fila->emailCliente;
}

Tenéis alguna idea en donde puedo estar fallando?

Por solonova

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2015 12:03 pm
Solucionado:

$sentencia = "SELECT clientes.* FROM clientes INNER JOIN pedidos ON clientes.ref = pedidos.ref_cliente WHERE pedidos.productos LIKE '%loquesea%' ;";

Gracias

Por solonova

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 May 2015 12:16 pm
En la primera versión de la consulta, te faltó...

Código MySQL :

...AND `clientes`.`ref` = `pedidos`.`ref_cliente`

Quedandote...

Código MySQL :

SELECT clientes.*, pedidos.* FROM clientes,pedidos WHERE pedidos.ref= '82' AND `clientes`.`ref` = `pedidos`.`ref_cliente`

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 18 Nov 2015 12:20 pm

solonova escribió:

Buenos días amigos.
Estoy probando el ejemplo que comentáis para seleccionar datos de varias tablas pero no consigo buen resultado.

Mi sentencia es algo similar a esto:

$sentencia = "SELECT clientes.*, pedidos.* FROM clientes,pedidos WHERE pedidos.ref= '82';";

Debería de arrojarme el resultado de los datos de un solo cliente, es decir, el único que tiene un registro de la tabla pedidos con esa referencia, pero me da muchísimos registros (creo qque todos los que hay en la tabla clientes)...

Luego y como ejemplo, muestro los datos de mi cliente en pantalla con php de la siguiente forma:

while ($fila = mysql_fetch_object($result)) {
echo $fila->nombreCliente;
echo $fila->emailCliente;
}

Tenéis alguna idea en donde puedo estar fallando?

HOLA QUE TAL AMI ME PASABA LO MISMO
SELECCIONABA TODOS LOS DATOS ESO SE SOLUCIONA EN LA CLAUSULA WHERE CON LAS SESSIONES
SUPONTE QUE UN USUARIO INGRESA: USUARIO CONTRASEÑA
Y DESPUES INSERTA UN VALOR TENDRIAS QUE TENER UN CAMPO USUARIO Y ENTONCES CORROBORAS
WHER usuario ='$_SESSION[usuario]' ") YA CON ESO CADA VES QUE RECOJAS UN VALOR VA A SER EL ASOCIADO A LA CUENTA EJEMPLO nicolas1

Por gabrielh180

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Nov 2015 12:48 pm
gabrielh180: Aunque funciona yo no lo haría así por tema de seguridad. Estás usando una variable sin filtrar como parte de una sentencia SQL. Eso es una invitación a un hacking bastante trivial.

Por DriverOp

Claber

2510 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.