Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   sumar el total de dos tablas (https://www.clubdelphi.com/foros/showthread.php?t=40020)

pdcd 05-02-2007 17:18:57

sumar el total de dos tablas
 
Hola!
PHP/MYSQL
Quiero mostrar el total de fotos de cada cliente (la información esta en dos tablas) tengo la siguiente consulta

$sql = "SELECT count(*) as cant_fotos, mes FROM fotosjuan, fotospedro WHERE cliente='$dato1' and año='$dato2' GROUP BY mes";

El tema es que en este momento la tabla fotosjuan tiene 30 clientes y la tabla fotospedro solo 10 (estos 10 están también en la otra tabla).
Y que pasaría si hubiera clientes diferentes.

Me da el mensaje
Column 'cliente' in field list is ambiguous.

Cómo podría solucionarlo?, si alguien me pudiera dar una idea, se agradece.

kayetano 05-02-2007 18:55:41

Hola

La consulta que estas realizando no es correcta.
Si lo que quieres hacer es sumar el total de dos tablas lo que debes hacer es obtener el total de una y despues el total de la otra y sumarlos resultados.

Estoy intentando buscarle sentido a la consulta que has puesto y la verdad es que no se lo encuentro:
1. Realizas una concatenación de dos tablas todas con todas es decir 30x10.
2. Condicionas la consulta a dos campos que por lo visto se repiten en las dos tablas (de aquí el error).
3. Utilizas un campo llamado "cliente", que pienso que será la clave ajena a la tabla clientes, pero veo también que utilizas una tabla para cada cliente, ¿que sentido tiene esto?
4. Y al final para redondear la jugada lo agrupas todo por mes, ¿quieres obtener el total de las fotos o el total por meses?

Supongo que en el caso de que esta consulta tuviera algún sentido debería ser algo asin:
Código PHP:

$sql "SELECT count(*) as cant_fotos, mes FROM fotosjuan fj, fotospedro fp WHERE fj.cliente='$dato1' and fj.año='$dato2' AND fp.cliente='$dato3' and fp.año='$dato4' GROUP BY mes"


pdcd 05-02-2007 21:33:38

A ver.
Primero que todo gracias por la respuesta.
Te cuento
- originalmente tenía la tabla fotosjuan con id, cliente, año, día, mes, título, etc.
- luego se agregó la tabla fotospedro que tiene los mismos campos.

Hay dos fotografos que realizan fotos para (hasta el momento) los mismos clientes

En este momento yo obtengo de cada tabla (con la consulta que adjunté o variaciones) la cantidad total de fotos y lo muestro por ejemplo, por mes (ordenados por cliente) o por año (ordenados por cliente) o por cliente (ordenados por mes).

Lo que quiero es obtener el total de fotos (las que tomo juan y las que tomo pedro) para un determinado cliente o mes o año.

Espero que se entienda mejor, a ver si me puedes ayudar.

kayetano 06-02-2007 08:54:48

Hola

Perfecto, lo que debes de hacer es crear una única tabla de fotos muy parecida a la que tienes pero añadiendo el id_fotografo que será clave ajena de otra tabla llamada fotógrafos, es decir:
fotos (id, id_fotografo, cliente, año, día, mes, título, ...)
fotografos ( id, nombre, dirección, telefono, ... )
ahora si que puedes hacer facilmente las consultas que comentas:
- Esta primera para obtener las fotos de un cliente en cada mes del año.
Código PHP:

$sql "SELECT count(*) as cant_fotos, mes FROM fotos WHERE cliente='$dato1' and año='$dato2' GROUP BY mes"

- y esta segunda para obtener las fotos realizadas por cada fotografo a cada cliente cada mes.
Código PHP:

$sql "SELECT count(*) as cant_fotos, mes FROM fotos GROUP BY id_fotografo, cliente, mes"


pdcd 06-02-2007 15:43:22

Gracias kayetano.
Manos a la obra, y a ver como me resulta.


La franja horaria es GMT +2. Ahora son las 15:20:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi