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

consultas cruzadasd

Estas en el tema de consultas cruzadasd en el foro de Mysql en Foros del Web. Hola: Tengo la siguiente consulta que me da los resultados correctos, pero solo los que tienen datos en la tabla anticipos, y me gustaría listar ...
  #1 (permalink)  
Antiguo 03/01/2012, 13:05
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 0
consultas cruzadasd

Hola:

Tengo la siguiente consulta que me da los resultados correctos, pero solo los que tienen datos en la tabla anticipos, y me gustaría listar tambien los de la tabla personal aunque no tengan anticipos ¿Como puedo hacerlo?:
Gracias y un saludo

Código PHP:
$query_personal " SELECT 
personal.nombre As 'nombre',
             idempleado As 'idempleado',
             Sum(anticipos.anticipo) AS 'totalanticipo'
      FROM personal,anticipos where personal.id=anticipos.idempleado 
      Group by  idempleado ORDER by nombre ASC"
;
mysql_select_db($database_barco$barco);
$personal mysql_query($query_personal$ba) or die(mysql_error());
$row_personal mysql_fetch_assoc($personal); 
  #2 (permalink)  
Antiguo 03/01/2012, 13:11
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: consultas cruzadasd

Con LEFT JOIN

sería algo asi:


Código SQL:
Ver original
  1. SELECT
  2. personal.nombre AS 'nombre',
  3. idempleado AS 'idempleado',
  4. SUM(anticipos.anticipo) AS 'totalanticipo'
  5.              
  6. FROM personal
  7.  
  8.  LEFT  JOIN anticipos
  9.  
  10. WHERE personal.id=anticipos.idempleado
  11. GROUP BY  idempleado ORDER BY nombre ASC
__________________
la la la
  #3 (permalink)  
Antiguo 03/01/2012, 15:01
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: consultas cruzadasd

Muchas gracias:

He puesto el código así, pero solo me lista el primer registro de la tabla personal

Código PHP:
SELECT personal.nombre AS 'nombre',idempleado AS 'idempleado',personal.id AS 'id',Sum(anticipos.anticipo) AS 'totalanticipo'FROM anticipos LEFT JOIN personal ON personal.id=anticipos.idempleado Group by  idempleado ORDER by nombre ASC

mysql_select_db
($database_barco$ba);
$personal mysql_query($query_personal$barco) or die(mysql_error());
$row_personal mysql_fetch_assoc($personal); 
Los registros los consigo así:


Código PHP:
<?php do{ ?> 
 <tr >
                    <td><input type='text' size='5' name='id' value='<?php echo $row_personal['idempleado']; ?>' /></td>
                    <td ><input type='text' size='40' name='nombre' value='<?php echo $row_personal['nombre']; ?>' /></td>
                    <td ><input class='input1' type='text'size='15' name='anticipo2' value='<?php echo $row_personal['totalanticipo']; ?>'/></td>  
                    <td width="37%"><input type='checkbox' name='seleccion'  value='<?php  if (isset($row_personal['id'])){echo $row_personal['id'];}else {echo $row_personal['idempleado'];}?>' ></td>
                </tr>
                   <?php } while ($row_personal mysql_fetch_assoc($personal)); ?>
  #4 (permalink)  
Antiguo 03/01/2012, 16:18
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: consultas cruzadasd

Gracias por la colaboración, ya lo solucioné:

Código PHP:
$query_personal ="SELECT  SUM(anticipos.anticipo) AS 'totalanticipo', personal.nombre,personal.id FROM personal LEFT JOIN anticipos ON anticipos.idempleado = personal.id Group by  personal.id "
  #5 (permalink)  
Antiguo 03/01/2012, 16:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: consultas cruzadasd

Hola eurodoblon:

Veo que no observaste bien la consulta que te propone truman_truman y por lo que veo tampoco tienes idea de como funciona el LEFT JOIN (y supongo que tampoco el RIGTH JOIN). Si le preguntas a Santa Wikipedia, estoy seguro que te dará la respuesta:

http://es.wikipedia.org/wiki/Join

Tanto en el LEFT JOIN como en el RIGHT JOIN el orden en el que pones las tablas a utilizar es fundamental... es decir la tabla que pones en el FROM y en JOIN respectivo. Checa la liga que te puse arriba.

Finalmente, por favor, NO INCLUYAS CÓDIGO PHP EN ESTE FORO. Este foro es exclusivamente de MySQL, cualquier cuestión de programación publícala en el foro correspondiente.

Saludos
Leo.

Etiquetas: query, select, sql, tabla
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 11:57.