View Full Version : [MYSQL] query su tre tabelle
Salve a tutti
preannunciando che sono alle prime armi con msql :D
sto cercando di aiutare un amico con un gestionale per la sua attività
mi trovo in una condizione con tre tabelle con la stessa chiave :
Tabella: agente cliente schema_provv
Chiavi: agente_id agente_id agente_id e num_provv
dovrei con una query aggiornare il valore num_provv relativo all'agente_id se i clienti con agente_id sono più di un determinato numero....
è possibile tutto ciò
qualche anima pia mi aiuti
grazie
Da come l'hai descritto, ci sarà sempre e solo un cliente con un determinato agente_id, siccome agente_id è chiave primaria (e quindi ha un valore univoco) della tabella cliente.
mi sono espresso uno schifo
ogni agente ha più clienti
raggiunto un numero di clienti ha come bonus un livello più alto di provvigioni
Questo non risolve il problema perchè la chiave primaria della tabella cliente è sempre agente_id.
Sarebbe più sensata una strutturazione delle tabelle in questo modo:
tabella AGENTE --> PK: agente_id
tabella CLIENTE --> PK: cliente_id, FK: agente_id
tabella SCHEMA_PROVV --> Ti direi agente_id-num_provv come chiave primaria composta, ma non ho capito bene la funzione di questa tabella.
Con una strutturazione del genere sarebbe possibile pensare ad una soluzione per ciò che chiedi.
ho detto di essere un pivello infatti...ahah
le chiavi primarie sono diverse per ogni tabella
la mia domanda è
posso con un select sommare i clienti con lo stesso agente e se questo valore è maggiore di 4 nella tabella schema faccio un update ad un determinato campo dello stesso agente ?:mc:
Premetto che non ne ho verificato la correttezza, ma la query dovrebbe essere una cosa del genere
UPDATE schema_provv AS sp
SET sp.num_provv = [valore che vuoi settare]
WHERE sp.agente_id IN (
SELECT c.agente_id
FROM cliente AS c
GROUP BY c.agente_id
HAVING COUNT(c.cliente_id) > 4
)
grazie mille
perfetta in navicat sql dove stavo facendo le prove....
errore su mysql aruba dove la volevo schedulare...
la eseguo via php dovrebbe andare:D
grazie grazie
Un php così dovrebbe andare?
<?php
$connessione = mysql_connect("localhost","root","root")or die("Connessione non riuscita: " . mysql_error());
print ("Connesso con successo");
mysql_select_db("PROVA", $connessione) or die("Errore nella selezione del database";
$query = "UPDATE schema_provv AS sp
SET sp.num_provv = [valore che vuoi settare]
WHERE sp.agente_id IN (
SELECT c.agente_id
FROM cliente AS c
GROUP BY c.agente_id
HAVING COUNT(c.cliente_id) > 4
)
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
mysql_close($connessione);
?>
Delego.. Non sono pratico di PHP.. :ops:
ahahaha grazie hai gia fatto tanto :D :D
ok risolto anche il php...
PHØΞИIX visto che sei pratico di sql posso solo farti un'altra domandina??
vabbè io la faccio
mi aiuteresti a capire cosa sbaglio??
SELECT
o.agente_id ,CURRENT_DATE as dat,data_aggiunta
FROM
ordini AS o
GROUP BY
o.agente_id
WHERE
DATEDIFF(dat,ordini.data_aggiunta) < 30
:muro: :muro: :muro: :muro:
Semplice, la WHERE condition va definita prima della GROUP BY..
Ti rimando alla documentazione con la sintassi della SELECT: SELECT STATEMENT (http://dev.mysql.com/doc/refman/5.0/en/select.html)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.