|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
[MYSQL] query su tre tabelle
Salve a tutti
preannunciando che sono alle prime armi con msql 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 |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2007
Città: Albiolo (CO)
Messaggi: 165
|
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.
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
mi sono espresso uno schifo
ogni agente ha più clienti raggiunto un numero di clienti ha come bonus un livello più alto di provvigioni |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2007
Città: Albiolo (CO)
Messaggi: 165
|
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. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
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 ? |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Sep 2007
Città: Albiolo (CO)
Messaggi: 165
|
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 ) |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
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 grazie grazie |
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
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); ?> |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Sep 2007
Città: Albiolo (CO)
Messaggi: 165
|
Delego.. Non sono pratico di PHP..
|
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
ahahaha grazie hai gia fatto tanto
|
|
|
|
|
|
#11 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
ok risolto anche il php...
PHØΞИIX visto che sei pratico di sql posso solo farti un'altra domandina?? |
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
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 |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Sep 2007
Città: Albiolo (CO)
Messaggi: 165
|
Semplice, la WHERE condition va definita prima della GROUP BY..
Ti rimando alla documentazione con la sintassi della SELECT: SELECT STATEMENT |
|
|
|
|
|
#14 |
|
Junior Member
Iscritto dal: Nov 2010
Messaggi: 9
|
grazie mille risolto :d
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:54.



















