Ajuda MySQL

Per resoldre dubtes de caire tècnic, relacionades o no amb el món del ripeig.

Moderadors: Petiso, Ayu

Respon
Avatar de l’usuari

Autor del tema
Lambolico
Entrades: 723
Membre des de: dt. set. 18, 2007 18:25
Ubicació: Mataró
Status: Desconnectat

Ajuda MySQL

#1

Entrada Autor: Lambolico » dj. gen. 15, 2009 3:32

Bones, estic fent el treball de recerca....i me quedat encallat en la part més important TT....si algú pot ajudar...

Resulta que tinc una base de dades que gestiona una empresa de transports. El mànager, introdueix quines unitats de transport té i quins lliuraments ha de fer. Docs bé, tinc un problema en la consulta MySQL principal, la que selecciona quines unitats de transport estàn disponible per a fer una entrega. Tinc dus taules:

unitats
id
descripcio
capacitat
velocitat

unitats_ocupades
id
id_unitat
id_lliurament
data_sortida
data_arribada

llavors tinc dues dates, la data quan s'haurà dentregar el lliurament, i la data desde la que el paquet està llest per al transport. El problema bé al fer una consulta que mostri només les unitats que no tenen cap feina assignada entre les dues dates proporcionades.

El màxim que ha aconseguit ha estat que funcionés....però si una unitat de transport tenia dues feines programades, una fora de la duració del nou lliurament i una altre dins, primer saltava la unitat, pero després al trobar-la fora dels marges, pasava la seva id com a bona.

Bé, si algún super heroi em pot ajudar, li estari molt molt agraït.


Little man comes when everything goes

Avatar de l’usuari

arakelov
Entrades: 10758
Membre des de: ds. feb. 17, 2007 16:37
Ubicació: Sant Martí (BCN)
Status: Desconnectat

Re: Ajuda MySQL

#2

Entrada Autor: arakelov » dj. gen. 15, 2009 8:34

De super heroi res, però algo de SQL sé :mrgreen:

Jo el que faria és una subquery per detectar quines són les unitats que tenen alguna assignació entre les dues dates i excloure-les, amb un NOT IN:

Codi: Selecciona’ls tots

SELECT id, descripcio
FROM unitats
WHERE id NOT IN (
   SELECT id_unitat
   FROM unitats_ocupades
   WHERE <CONDICIO> /*tenen assignació*/
);
on <CONDICIO> seria, si no ho entès malament, alguna cosa com ara

[data_paquet_llest] <= data_sortida AND data_arribada <= [data_lliurament]

Els que van entre [ ] serien els paràmetres que passes a la consulta.

Salut!

EDITO: no estava segur si la clàusula NOT IN està suportada en MySQL (jo toco més Oracle o SQL Server) però sembla que sí: http://ocaoimh.ie/2004/09/16/mysql-find ... her-table/

Resalut!
arakelov l’ha editat per darrera vegada el dia: dj. gen. 15, 2009 8:37, en total s’ha editat 1 vegada.
Why you think the net was born? Porn! Porn! Porn!


Ferriol
Entrades: 1432
Membre des de: dv. feb. 09, 2007 13:18
Status: Desconnectat

Re: Ajuda MySQL

#3

Entrada Autor: Ferriol » dj. gen. 15, 2009 8:37

Hola,
No et puc ajudar directament, pero mira aquests links a vore si ells ho poden fer
[url]http://www.aa-sistemas.eti.br/ayudadeaccess/Index.html[/url]
[url]http://www.mvp-access.com/foro/[/url]
Salut i sort
Imatge
Salut i sort
Imatge

Avatar de l’usuari

Petiso
Site Admin
Site Admin
Entrades: 16309
Membre des de: dv. oct. 06, 2006 13:13
Status: Desconnectat

Re: Ajuda MySQL

#4

Entrada Autor: Petiso » dj. gen. 15, 2009 11:06

Lambolico ha escrit:Bé, si algún super heroi em pot ajudar, li estari molt molt agraït.
Weno .... doncs anava a contestar però se m'han avançat ... un tema apassionant el SQL :-p



Adéu !
Imatge Imatge

Avatar de l’usuari

Autor del tema
Lambolico
Entrades: 723
Membre des de: dt. set. 18, 2007 18:25
Ubicació: Mataró
Status: Desconnectat

Re: Ajuda MySQL

#5

Entrada Autor: Lambolico » dg. feb. 08, 2009 20:15

Buenas, sento el retard, pero no havia vist la resposta! Bé, mercia a tots per cuntestar.
Al final el problema amb aquesta consulta era que faltaven les cometes en els camps de que contenien dates. Tot hi així la consulta no feia el que jo volia que fés (error lògic meu). Al final la vaig reconstruir, i he vaig fer una cosa similar al que arakelov havi dit: consulto quines unitats no poden realitzar el lliurament, i les excloc amb una combinació per l'esquerra. Bé, si a algú li interessés molt ja penjaria el codi.

Merci a tohom! ;)
Little man comes when everything goes

Respon