Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    2

    [PHP/MYSQL] Uno storico trasporti e comparazioni di date, sono totalmente bloccato.

    Salve a tutti, è da circa una settimana che sono bloccato su una parte del progetto che sto sviluppando e non ne vengo a capo, non credo sia così difficile ma a forza di provare e riprovare ora come ora dovrei un attimo deframmentare il cervello, così chiedo a voi se sapete darmi una dritta...

    Andando all'essenziale, ho tre tabelle, articoli, magazzini, e una con i trasporti effettuati da questi articoli da magazzino a magazzino in data X (con più trasporti per articolo).
    Ho creato una pagina dove inserendo una data a scelta e un magazzino dovrebbe mostrarmi quali articoli erano presenti in quel magazzino a quella data.
    La struttura nel database è questa:

    campo (tabella)

    ID_Articolo (articoli,trasporti)
    ID_Magazzino (articoli,trasporti)
    Data (trasporti)

    Questo è un esempio dei dati nella tabella trasporti:

    Data - Articolo - Magazzino

    2012-07-10 - 5066 - 17
    2012-07-06 - 5066 - 16
    2012-07-06 - 5045 - 13
    2012-07-05 - 5066 - 8
    2012-07-01 - 5066 - 17
    2012-07-01 - 5028 - 3
    2012-06-29 - 5066 - 14

    Ad esempio l'articolo 5066 della tabella, deve apparire nel magazzino 17 da data 2012-07-01 a 2012-07-05, le date successive non si vede in quanto è stato spostato e si vedrà nel magazzino 8 da data 2012-07-05 a data 2012-07-10, per poi riapparire nel 17 dal 2012-07-10 in poi

    Sono proprio in crash... Un grazie sentito a chi saprà indirizzarmi verso la soluzione!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    La richiesta è diversa dall'esempio.
    Tu chiedi: inserendo una data e un magazzino devo ottenere i pordotti presenti in quella data in quel magazzino

    Poi esemplifichi: il prodotto 5066 deve apparirmi da data tot a data tot nel magazzino tale... il che è un'altra cosa.

    Stando alla richiesta dovresti invece avere:
    - inserimento data 2012-07-01
    - inserimento magazzino 17
    - risultato: 5066

    Chiarisci un attimo quello che ti serve, perché il secondo caso è veramente banale da risolvere.

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    La richiesta era chiarissima, a parte l'errore nell'esempio perché c'è un ulteriore spostamento al magazzino 16 in data 6. Però la soluzione non è semplicissima, tutt'altro.
    Inoltre c'è da dire che, con i criteri che hai esposto, nelle giornate dei trasporti un prodotto apparirebbe in entrambi i magazzini (quello di partenza e quello di arrivo).
    Più tardi vedo se trovo il tempo di farci una pensata

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Così dovrebbe andare

    codice:
     SELECT articolo
    FROM trasporti t1
    WHERE magazzino = x and
    DATA = (
    
    SELECT max(
    DATA )
    FROM trasporti 
    WHERE articolo = t1.articolo
    AND DATA <= 'y'
    )
    Mettendo < invece di <= nel test sulla data potresti risolvere il problema dell'apparizione doppia nella data del trasporto. In questo modo il prodotto risulterebbe appartenente al magazzino "vecchio" fino al giorno del trasporto, e a quello nuovo dal giorno dopo. Nel giorno del primo trasporto però non apparirebbe da nessuna parte.

  5. #5
    scusa, ma se tu vuoi sapere quanti articoli 5066 ci sono in un magazzino ad una determinata data, dovrai fare la somma di tutti gli articoli fino alla data di interesse meno gli spostamenti da quel magazzino ad altro magazzino...cioè mi sa tanto che non ho capito la tua struttura del database ecco... cioè li si sa che fino al giorno x hai avuto due consegne di 5066 al magazzino 17, quindi.... boh, non ho capito
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.