Salve!
Dovrei realizzare una query per estrarre informazioni sulle pratiche presenti nel db.
Ho una tabella contenente il nome delle pratiche con l' id del cliente a cui si riferisce e l' id dell' operatore che ha effettuato l' inserimento (come in figura).
Altre 2 tabelle associano una l' id_operatore(pr. key) al nome_operatore, l' altra l' id_cliente(pr. key) al nome_cliente.
La query dovrebbe restituirmi una tabella con l' elenco delle pratiche presenti, visualizzando per ciascuna nome_cliente e nome dell' operatore che ne ha effettuato l' inserimento.
Io non ho proprio idea di come si faccia spero possiate essermi di aiuto.
Grazie!
MySql query su tre tabelle
Moderatori:
Paolino,
fairyvilje
12 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
Insomma, devi fare una JOIN:
http://dev.mysql.com/doc/refman/5.0/en/join.html
Non so i nomi delle tue tabelle, però dovrai fare qualcosa di questo tipo:
http://dev.mysql.com/doc/refman/5.0/en/join.html
Non so i nomi delle tue tabelle, però dovrai fare qualcosa di questo tipo:
- Codice: Seleziona tutto
SELECT nome_pratica, nome_cliente, nome_operatore
FROM tabella_pratiche
INNER JOIN tabella_clienti
ON tabella_pratiche.idcliente=tabella_clienti.idcliente
INNER JOIN tabella_operatori
ON tabella_pratiche.id_op=tabella_operatori.id_op
0
voti
Questa è la query modificata con i nomi delle mie tabelle:
Mi restituisce una tabella con solo le 3 pratiche che hanno idcliente=19
- Codice: Seleziona tutto
SELECT nome_pratica, nome, nome_op
FROM pratica
INNER JOIN schedacliente
ON pratica.idcliente=schedacliente.idcliente
INNER JOIN anag_operatori
ON pratica.id_op=anag_operatori.id_op;
Mi restituisce una tabella con solo le 3 pratiche che hanno idcliente=19
0
voti
Si rendono necessarie ulteriori modifiche alla query.
Mi è stata chiesta la possibilità di inserire per ogni operatore la possibiltà di avere un diretto superiore. Si tratta di un operatore che non è amministratore ma ha permessi di amministratore su uno o più operatori.
Ho pensato di aggiungere alla tabella contenente le credenziali di accesso un ulteriore colonna.
In pratica questa tabella contiene id_op. username, password, id_op_perm.
Quindi ho pensato di associare id_op_perm=NULL nel caso in cui l' operatore non ha nessun diretto superiore, in caso contrario id_op_perm sarà l' id operatore suo superiore.
La query precedente dovrà quindi estrarre anche l' id_op_perm.
Adesso la query è quindi su 4 tabelle e la cosa peggiore è che non riesco a riformulare la query. Non sono riuscito a capire il ragionamento che ci sta dietro. Gli esempi che ho trovato con google riguardo alle join riesco a capirli perché sono in ogni caso più semplici.
Mi è stata chiesta la possibilità di inserire per ogni operatore la possibiltà di avere un diretto superiore. Si tratta di un operatore che non è amministratore ma ha permessi di amministratore su uno o più operatori.
Ho pensato di aggiungere alla tabella contenente le credenziali di accesso un ulteriore colonna.
In pratica questa tabella contiene id_op. username, password, id_op_perm.
Quindi ho pensato di associare id_op_perm=NULL nel caso in cui l' operatore non ha nessun diretto superiore, in caso contrario id_op_perm sarà l' id operatore suo superiore.
La query precedente dovrà quindi estrarre anche l' id_op_perm.
Adesso la query è quindi su 4 tabelle e la cosa peggiore è che non riesco a riformulare la query. Non sono riuscito a capire il ragionamento che ci sta dietro. Gli esempi che ho trovato con google riguardo alle join riesco a capirli perché sono in ogni caso più semplici.
0
voti
Provo a scrivere 2 righe semplici.
Nell'ipotesi che la tabella si chiami anag_operatori e che tu voglia estrarre lo username dei due operatori, scriverei così:
E' quanto cerchi?
Nell'ipotesi che la tabella si chiami anag_operatori e che tu voglia estrarre lo username dei due operatori, scriverei così:
- Codice: Seleziona tutto
select a.username, b.username
from anag_operatori as a
left join anag_operatori as b
on b.id_op=a.id_op_perm
E' quanto cerchi?
Fabio
0
voti
Attualmente sto utilizzando questa query:
SELECT nome_pratica, nome, nome_op
FROM pratica
INNER JOIN schedacliente
ON pratica.idcliente=schedacliente.idcliente
INNER JOIN anag_operatori
ON pratica.id_op=anag_operatori.id_op;
La tabella pratica contiene;
id_pratica come chiave primaria,
nome_pratica
id_operatore
id_cliente
La query che sto usando mi fornisce una tabella con l' elenco delle pratiche presenti mostrandomi anzichè id_operatore e id_cliente, nome operatore e nome cliente.
poiché un operatore può avere un superiore (anch' egli operatore) e necessario mostrarlo nella tabella.
Per quanto riguarda gli operatori ho due tabelle una contenente i dati anagrafici e l' altra contenente i dati per il login.
In quest' ultima ho aggiunto una colonna id_op_perm che conterrebbe l' id dell' operatore superiore.
Adesso dovrei modificare quella stessa query in modo da avere accanto al nome dell' operatore l' id dell' operatore superiore (almeno per il momento).
La join dovrà quindi essere integrata nella query esistente.
Grazie.
SELECT nome_pratica, nome, nome_op
FROM pratica
INNER JOIN schedacliente
ON pratica.idcliente=schedacliente.idcliente
INNER JOIN anag_operatori
ON pratica.id_op=anag_operatori.id_op;
La tabella pratica contiene;
id_pratica come chiave primaria,
nome_pratica
id_operatore
id_cliente
La query che sto usando mi fornisce una tabella con l' elenco delle pratiche presenti mostrandomi anzichè id_operatore e id_cliente, nome operatore e nome cliente.
poiché un operatore può avere un superiore (anch' egli operatore) e necessario mostrarlo nella tabella.
Per quanto riguarda gli operatori ho due tabelle una contenente i dati anagrafici e l' altra contenente i dati per il login.
In quest' ultima ho aggiunto una colonna id_op_perm che conterrebbe l' id dell' operatore superiore.
Adesso dovrei modificare quella stessa query in modo da avere accanto al nome dell' operatore l' id dell' operatore superiore (almeno per il momento).
La join dovrà quindi essere integrata nella query esistente.
Grazie.
0
voti
Non so come si chiami la tabella che contiene il id_op_per (ossia la tabella per il login), immagino non sia la anag_operatori, quindi la chiamo login.
Proverei in questo modo:
O non ho capito la struttura?
Proverei in questo modo:
- Codice: Seleziona tutto
SELECT nome_pratica, nome, nome_op, id_op_perm
FROM pratica
INNER JOIN schedacliente
ON pratica.idcliente=schedacliente.idcliente
INNER JOIN anag_operatori
ON pratica.id_op=anag_operatori.id_op
INNER JOIN login
ON login.id_op=anag_operatori.id_op;
O non ho capito la struttura?
Fabio
12 messaggi
• Pagina 1 di 2 • 1, 2
Chi c’è in linea
Visitano il forum: Nessuno e 5 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




