elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... 62
191  Programación / Ejercicios / Re: Corregidme estos ejercicios de sql en: 20 Abril 2009, 06:33 am
No lo he probado, pero segun veo el codigo, si tienes un codigo A0001 varias veces, este te saldra solo una vez porque los estas agrupando con el GROUP BY  :P

si lo quieres mostrar asi (por ejemplo)

DNI:11.111.111z           Nombre: cliente
Direccion:         Poblacion:        Provincia:

VENTAS:

CODIGO  DESCRIPCION   CANTIDAD  PRECIO  TOTAL
A0001      ArTICLE1              10          100,00     1000,00
A0001      ArTICLE1              10          100,00     1000,00
A0001      ArTICLE1              10          100,00     1000,00
A0001      ArTICLE1              10          100,00     1000,00
A0001      ArTICLE1              10          100,00     1000,00
A0001      ArTICLE1              10          100,00     1000,00
A0001      ArTICLE1              10          100,00     1000,00
A0001      ArTICLE1              10          100,00     1000,00

debes quitar el sum( ) ,ya que al hacerlo lo que haces es sumar todo el campo total, pero si lo sumas quiere decir que 8 registros (en mi ejemplo) los haces un solo registro, y para que no te de error tienes que agruparlo como lo estas haciendo ahorita.

aparte de quitar el sum( ) tambien tienes que modificar el GROUP BY que estas utilizando

por cierto, que gestor de bases utilizas?


salu2
192  Informática / Software / Re: Peliculas/Series/Música En Descarga Directa "AQUI PEDIDOS" en: 20 Abril 2009, 06:01 am
Mi primer pedido:
Es un episodio especial...

Beavis and Butt-Head Do Christmas
ACA


Los demas tengan paciencia, algunas cosas son faciles de encontrar y comprobar, otras son mas dificiles porque los enlaces estan caducados, asi que tranquilos...
193  Programación / Ejercicios / Re: Corregidme estos ejercicios de sql en: 18 Abril 2009, 01:49 am
Hi

pues, si, usamos dni's distintos, pero al final creo que no importa, por lo menos en el ejemplo de ls tablas que coloque arriba no importa, ya que seguiria devolviendo los mismos registros.

donde trabajo se dio un caso curioso, aca quien creo el sistema guarda la descripcion del producto en la tabla padre y en la tabla ventas, ahora bien, me toco hacer una consulta pequeña en la que debia filtrar cierta informacion en la descripcion, yo como habitualmente hago, tome la descripcion de la tabla padre, pero que paso? que me equivoque en cierto modo XD, cuando se hizo una venta la descripcion de cierto codigo habia cambiado, con el tiempo volvio a cambiar y entonces hubieron dos descripciones distintas, la pregunta fue, cual de ellas era la que queriamos ver xD, en lo que comento, lo que necesitabamos era la descripcion con la que se vendio xD

el segundo ejercicio depende, el gestor de datos que yo uso mas frecuentemente no necesita un DEFINE ni un & , en MySQL no he probado si esto es necesario (cuando lo compruebe te aviso ;) )

salu2
194  Programación / Ejercicios / Re: Corregidme estos ejercicios de sql en: 17 Abril 2009, 22:11 pm
Los tuyos y los mios estan bien en ambos literales, yo coloque nada mas otra forma de hacerlo ñ_ñ

solo que habran casos en los que necesitaras usar algun Join, como el left,right,full
porque si relaciones una campo con otro lo que sucede es algo asi

0001 = 0001

pero y si uno de ellos estan vacios?

0001 = nada

entonces con un join podrias ver este tipo de contenidos en los que si bien quieres relacionar un campo con otro tambien podria ser que te interese mas ver todos los registros aunque en algun punto no se pueda establecer una relacion (vaya, nose si me explique bien xD )

con lo del segundo es cierto xD no lei bien xD
Código
  1. SELECT a.codigo,a.descripcion,SUM(a.preu*b.cant_vendida) total_importe
  2. FROM articulos a
  3. INNER JOIN ventas b ON a.codigo = b.codigo
  4. WHERE b.codigo = variable
  5. GROUP BY a.codigo,a.descripcion ORDER BY a.codigo;


salu2
195  Programación / Bases de Datos / Re: [?] MySQL "Registros Faltantes" Optimizar Consulta en: 16 Abril 2009, 16:02 pm
sin duda ^TiFa^ a de estar en lo correcto , yo no conozco EXPLAIN :/ tendre que leer.

yo tengo una pregunta, ID = identificador de grupo?

digamos, TABLA A

id | grupo |
-------------
1 | grupo A|
2 | grupo B|
3 | grupo C|
4 | grupo D|
5 | grupo E|

Encontrar los grupos que no esten el tabla B
seria algo asi como buscar su identificador nada mas, ya que al tener el identificador tienes el nombre del grupo tambien

Código
  1. SELECT * FROM tabla_A
  2. WHERE id  NOT IN( SELECT id DISTINCT FROM tabla_B );

por lo menos yo asi lo haria :P, nose si estare en lo correcto


salu2
196  Foros Generales / Foro Libre / Re: El juego del numero con imagenes en: 16 Abril 2009, 08:03 am
197  Programación / Ejercicios / Re: Corregidme estos ejercicios de sql en: 16 Abril 2009, 07:25 am
Lo siento por contestar tan tarde, pero espero que aun te sirva de algo xD

Veis algun error en estos dos ejercicios de sql??

Tenemos estas tablas:
Clientes(DNI,nombre,direccion, poblacion, districto postal, provincia)
Articulos(CODIGO, descripcion, cantidadstock, precio)
Ventas(dni, codigo, data, cantidadvendida)

1-Select para saber el total de euros vendidos a cada cliente a lo largo de tota la vida.
FORMATO:         DNI   nombre   importe total
                        --------------------------------


Código:
SELECT v.dni, cl.nombre, sum(v.cantidadvendida*a.preu) importe total
FROM clientes cl, articulos a, ventas v
WHERE cl.dni=v.dni
GROUP BY v.dni,cl.nombre
ORDER BY cl.dni;

Error quiza no, la logica de lo que quieres hacer permanece que es lo importante, pero en tu lugar yo usaria los Joins para hacerlo aunque se puede hacer en cierto modo de la forma en que tu lo has planteado.

Palara auxiliarme un poco en este intento de explicacion he creado las tablas e insertado 5 registros en cada tabla.

registros por tabla:

mysql> select * from clientes;
+------+--------------+
| dni  | nombre    |
+------+--------------+
|    1 | carlos       |
|    2 | pepito       |
|    3 | fulanito     |
|    4 | menganito |
|    5 | sutanito    |
+------+--------------+
5 rows in set (0.00 sec)

mysql> select * from articulos;
+--------+------+---------------------------+
| codigo | preu | descripcion        |
+--------+------+---------------------------+
|      1 | 0.25 | grapas                  |
|      2 |  0.5 | lapicero bic            |
|      3 | 0.75 | lapiz mogol            |
|      4 | 0.95 | lapiz facela            |
|      5 | 2.95 | colores 6 unidades |
|      6 | 9.95 | libro - La Ceiba      |
+--------+------+----------------------------+
6 rows in set (0.00 sec)

mysql> select * from ventas;
+--------+--------------+------------+
| codigo | cant_vendida | dni  |
+--------+--------------+------------+
|      1 |                   20 |    1 |
|      2 |                   10 |    5 |
|      1 |                   35 |    3 |
|      5 |                     5 |    3 |
|      5 |                     5 |    5 |
|      1 |                   30 |    1 |
|      2 |                   12 |    2 |
|      3 |                     2 |    3 |
|      4 |                     5 |    5 |
|      4 |                     5 |    4 |
|      4 |                     4 |    4 |
+--------+--------------+-------------+
11 rows in set (0.00 sec)


ahora, el numero de registros de la consulta deberia ser simplemente 5
asi

Código
  1. SELECT a.dni,a.nombre,SUM(b.preu * c.cant_vendida)total_importe FROM clientes a INNER JOIN ventas c ON a.dni=c.dni INNER JOIN articulos b ON b.codigo=c.codigo GROUP BY a.dni,a.nombre ORDER BY a.dni;
  2.  
+------+-----------+-------------------------+
| dni  | nombre    | total_importe    |
+------+-----------+-------------------------+
|    1 | carlos       |                 12.5 |
|    2 | pepito       |                    6  |
|    3 | fulanito     |               25.00 |
|    4 | menganito |                8.55 |
|    5 | sutanito    |               24.50 |
+------+-----------+-------------------------+
5 rows in set (0.12 sec)





2-Select para saber los euros vendidos de un articulo kualkiera, el codigo del articulo se pide mediante variables de sustitucion.
Codigo    descripcion   importe total
----------------------------------------
Código:
DEFINE codart
SELECT v.codigo, a.descripcion, sum(v.cantidadvendida*a.preu) importe total
FROM  articulos a, ventas v
WHERE  v.codigo=a.codigo
And v.codigo=&codart
GROUP BY  v.codi, a.descripcion
ORDER BY  v.codi;

bueno, este es bastante parecido , solo que no involucramos la tabla clientes
ya que solo tengo 5 codigos en la tabla articulos, la consulta tambien deberia devolverme solo 5 registros

Código
  1. SELECT a.codigo,a.descripcion,SUM(a.preu*b.cant_vendida) total_importe FROM articulos a INNER JOIN ventas b ON a.codigo = b.codigo GROUP BY a.codigo,a.descripcion ORDER BY a.codigo;
+--------+--------------------+----------------------------+
| codigo | descripcion        | total_importe    |
+--------+--------------------+----------------------------+
|      1 | grapas                |               21.25 |
|      2 | lapicero bic          |                   11 |
|      3 | lapiz mogol          |                  1.5 |
|      4 | lapiz facela          |               13.29 |
|      5 | colores 6 unidades |             29.50 |
+--------+--------------------+----------------------------+
5 rows in set (0.00 sec)

espero no haberme equivocado XD

Si se hace un calculo, ejemplo:
Código:
Select tabl1.camp1 , tabla2.camp2, (tabla2.camp2*tabla3.camp3) as Total
From tabla1, tabla2, tabla3
where ....

Pregunta: Siempre k hay un calculo en la select , Hay que poner un GROUP BY??
no en los calculos, sino cuando usas sum( ) o un max( ) etc
porque podrias tener

select codigo, (precio * cant_vendida) total from ventas y en este caso no necesitas hacer la agrupacion, incluso creo que si das group by te daria error porque no hay datos que agrupar, porque el campo lo estas agregando por registro, entonces si tienes 10 veces repetido el codigo 1 te saldran las 10 veces en la consulta

espero que en algo te ayude ;)

salu2
198  Foros Generales / Foro Libre / Re: El juego del numero con imagenes en: 14 Abril 2009, 04:10 am
199  Programación / PHP / Re: [sql] Sacar y modificar varias filas de una columna a la vez? en: 14 Abril 2009, 03:47 am
Servia, hay varias formas de hacerlo, la que tu mencionas es una de ellas (a mi si me funciona, cree la tabla solo para probar y el UPDATE me funciona sin problemas.)

Tambien probe la que menciona XafiloX que es bastante logica y tambien funciona, la de ^TiFa^ no la pruebo porque si viene de ella estoy seguro que tambien funciona, y cree una mia que tambien lo hace xD


Código
  1. UPDATE jugadores SET nombre="Prueba-Actualizado" WHERE id IN (SELECT id FROM jugar WHERE id LIKE "jugador%")

ya tienes tres opciones ;)

salu2
200  Programación / PHP / Re: Quien no paga... en: 14 Abril 2009, 01:52 am
podria hacerse de varias formas, esta quiza sea una bastante basica pero espero que te ayude a resolver tu problema

por ejemplo

tabla Clientes :
cod_cliente -> datos "001", "002" , "003" etc
nombre
tipo
etc

tabla abonos;
cliente (datos del mismo tipo que cod_cliente "001", "002" , "003" etc)
monto_abono
fecha_abono
etc

Código
  1. SELECT cod_cliente,nombre FROM clientes WHERE cod_cliente NOT IN (SELECT cliente FROM abonos WHERE fecha BETWEEN 01-01-2009 AND 01-31-2009)

con esto obtienes los que no han abonado ya que no aparecen en el rango de fechas definido con el between.

salu2
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... 62
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines