ciao a tutti. avrei bisogno di una mano per poter capire e scrivere un codice in php per collegare, modificare e visualizzare le tabelle con tutte le informazioni che ho gia inserito per fare delle prove ma che in realtà potranno essere inserite e ricercate dall'utente.
In breve (punto di vista dell'utente/negozio)quando hai bisogno di ordinare un articolo, scegli un articolo e la quantità che vuoi acquistare; il sistema dovrebbe trovare quali fornitori vendono quell'articolo (controlla se è disponibile una quantità sufficiente in magazzino) e calcola l'importo totale dell'ordine di acquisto applicando gli sconti (se disponibili). L'elenco dei risultati dovrebbe suggerire il miglior fornitore evidenziando quello più economico. Anche visualizzare i giorni minimi che ogni fornitore ha bisogno di spedire il vostro ordine; in questo modo è possibile scegliere che un fornitore più veloce è ancora meglio di uno più economico.
lascio il codice sql e che ho aggiunto nel myphpadmin (tranne la query di selezione per il fornitore più economico)
grazie in anticipo per qualsiasi aiuto/consiglio :)<3
Codice:-- Tabella per gli articoli
CREATE TABLE Articoli (
ID INT PRIMARY KEY,
Nome VARCHAR(100),
PrezzoVendita DECIMAL(10, 2)
);
-- Tabella per i fornitori
CREATE TABLE Fornitori (
ID INT PRIMARY KEY,
Nome VARCHAR(100),
GiorniSpedizione INT
);
-- Tabella per gli sconti dei fornitori
CREATE TABLE ScontiFornitori (
ID INT PRIMARY KEY,
FornitoreID INT,
ImportoMinimo DECIMAL(10, 2),
PercentualeSconto DECIMAL(5, 2),
DataInizio DATE,
DataFine DATE,
FOREIGN KEY (FornitoreID) REFERENCES Fornitori(ID)
);
-- Tabella per il magazzino
CREATE TABLE Magazzino (
ID INT PRIMARY KEY,
ArticoloID INT,
FornitoreID INT,
Quantita INT,
FOREIGN KEY (ArticoloID) REFERENCES Articoli(ID),
FOREIGN KEY (FornitoreID) REFERENCES Fornitori(ID)
);
-- Tabella per gli ordini
CREATE TABLE Ordini (
ID INT PRIMARY KEY,
ArticoloID INT,
FornitoreID INT,
Quantita INT,
ImportoTotale DECIMAL(10, 2),
DataOrdine DATE,
FOREIGN KEY (ArticoloID) REFERENCES Articoli(ID),
FOREIGN KEY (FornitoreID) REFERENCES Fornitori(ID)
);
-- Inserimento dei dati relativi agli articoli, magazzino, fornitori e agli sconti dei fornitori
INSERT INTO Articoli (ID, Nome, PrezzoVendita)
VALUES (1, 'Articolo 1', 10.00),
(2, 'Articolo 2', 15.00),
(3, 'Articolo 3', 20.00);
INSERT INTO Fornitori (ID, Nome, GiorniSpedizione)
VALUES (1, 'Fornitore A', 3),
(2, 'Fornitore B', 2),
(3, 'Fornitore C', 5);
INSERT INTO ScontiFornitori (ID, FornitoreID, ImportoMinimo, PercentualeSconto, DataInizio, DataFine)
VALUES (1, 1, 50.00, 0.1, '2023-01-01', '2023-12-31'),
(2, 2, 100.00, 0.15, '2023-01-01', '2023-12-31'),
(3, 2, 200.00, 0.2, '2023-01-01', '2023-12-31');
INSERT INTO Magazzino (ID, ArticoloID, FornitoreID, Quantita)
VALUES (1, 1, 1, 100),
(2, 1, 2, 50),
(3, 2, 1, 80),
(4, 2, 3, 100),
(5, 3, 2, 70),
(6, 3, 3, 120);
-- Esempio di query per trovare il fornitore più economico per un determinato articolo e quantità, considerando gli sconti applicabili
SELECT A.ID AS ArticoloID, A.Nome AS NomeArticolo, F.ID AS FornitoreID, F.Nome AS NomeFornitore,
(A.PrezzoVendita * O.Quantita * (1 - COALESCE(S.PercentualeSconto, 0))) AS ImportoTotale,
F.GiorniSpedizione
FROM Articoli A
JOIN Magazzino M ON A.ID = M.ArticoloID
JOIN Fornitori F ON M.FornitoreID = F.ID
LEFT JOIN ScontiFornitori S ON F.ID = S.FornitoreID
LEFT JOIN Ordini O ON O.ArticoloID = A.ID AND O.FornitoreID = F.ID
WHERE A.ID = 1 -- ID dell'articolo desiderato
AND M.Quantita >= 10 -- Quantità desiderata
ORDER BY ImportoTotale ASC, F.GiorniSpedizione ASC;

