Visualizzazione risultati 1 fino 19 di 19

Discussione: Prendere valori da una tabella e concatenarli ad un altra...

  1. #1
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito Prendere valori da una tabella e concatenarli ad un altra...

    Salve a tutti,
    ho un problema che sembra facile da risolvere ma non ne vengo a capo...
    Io uso PHP e sto creando una struttura di clienti con destinazioni diverse...

    Ho fatto due tabelle:

    Tabella clienti:



    Tabella sedi:



    Come potete vedere il campo in comune che hanno è piva (partita iva)...
    A me servirebbe riuscire ad estrapolare le eventuali sedi diverse del cliente.. Poi le varie ubicazioni e la sede verranno messe dentro una select...
    Ho provato ad usare questa query ma non mi restitituisce nulla:

    Codice:
    SELECT * FROM clienti as c LEFT JOIN sedi as s ON s.piva = c.piva WHERE s.piva = c.piva;
    Sbaglio io qualcosa?

  2. #2
    Guest

    Predefinito

    Codice PHP:
    WHERE s.piva = c.piva
    non ci va.
    Se devi inserire una condizione, allora aggiungi

    Codice PHP:
    WHERE c.piva = tua_condizione

  3. #3
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Uhm si hai ragione.. ora sembra che non dia errore... ma non mi restituisce cmq nulla... Per fare una prova io ho eseguito queste righe :


    Codice PHP:
    <?php $righe = mysql_fetch_array($query);
    $ragione=$righe['ragione'];
    $ragione2=$righe['ragione2'];
    $indirizzo=$righe['indirizzo'];
    $cap=$righe['cap'];
    $citta=$righe['citta'];
    $pr=$righe['provincia'];
    $piva=$righe['piva'];
    $ubicazione=$righe['ubicazione1'];
    $citta1=$righe['citta1'];
    $indirizzo1=$righe['indirizzo1'];?>
    Mentre per la query precedente e l'id ho usato :

    Codice PHP:
    <?php
    session_start
    ();
    include(
    'connect.php');
    $cliente=$_POST['ragione'];
    $ctrl_cliente = @mysql_query("SELECT * FROM clienti WHERE ragione='$cliente'") or die (mysql_error());
    if(@
    mysql_num_rows($ctrl_cliente)>0)
    {
    $_SESSION['id'] = $id;
    }
    $query = mysql_query("SELECT * FROM clienti as c LEFT JOIN sedi as s ON s.piva = c.piva WHERE c.piva='$cliente'");?>

    ma mi restituisce :

    Codice:
    Ragione Sociale:
    Ragione Sociale2:
    Indirizzo:
    Cap:
    Citta:
    Provincia:
    P.Iva:
    Ubicazione diversa:
    Citta diversa:
    Indirizzo diverso:

  4. #4
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Ho corretto un bug intanto... ho prelevato l'id giusto ora, tant'è che se stampo l'id mi dice 4, controllando è 4 l'id di quella ragione sociale...

  5. #5
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Uhm... Grazie a te ci sono riuscito ^^ La tua query mi ha salvato.. addirittura sbagliavo i modelli di confronto prima... Che animale lol...
    Solo una domanda.. e nel mentre testo...
    é possibile mettere in una select gli eventuali indirizzi trovati???

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da AdminTeclis Visualizza messaggio
    Uhm... Grazie a te ci sono riuscito ^^ La tua query mi ha salvato.. addirittura sbagliavo i modelli di confronto prima... Che animale lol...
    Solo una domanda.. e nel mentre testo...
    é possibile mettere in una select gli eventuali indirizzi trovati???
    Scusa ma non capisco cosa vorresti fare con "mettere in una select"...

  7. #7
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    ti spiego cosa vorrei ottenere facendo questa cosa, cosi almeno mi spiego meglio :)

    Sto facendo lo script per creare dei clienti e le loro varie destinazioni diverse...
    Ho creato la tabella clienti e quella sedi, come hai visto su, ed ora grazie anche a te, sono riuscito a farle parlare assieme..
    Ora vorrei fare si che l'utente cerchi il cliente tramite form(tramite ragione sociale) una volta trovato, se ha destinazioni diverse, le destinazioni vengano messe dentro un select e selezionate dal cliente stesso...
    Spero di essermi spiegato...

  8. #8
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    uhm forse ci sono riuscito....
    Per passare questi valori alla pagina del ddt è meglio usare le sessioni vero??? Passo in sessione le eventuali destinazioni... Il problema è come faccio a passare in sessione solo la destinazione selezionata???

  9. #9
    Guest

    Predefinito

    Così come hai strutturato le tabelle, il dividerle è solo superfluo. Avresti potuto mettere tutto dentro ad una sola tabella (ci sarà sempre e solo relazione 1 a 1, a meno di avere clienti senza sedi)

    Dovresti pensare invece ad una tabella con i clienti ed una con le sedi. Ogni record della tabella sedi corrisponderà uno ed un solo indirizzo e sarà riferito ad un cliente (tranne che un indirizzo lo vuoi riciclare in relazione di tipo molti-a-molti creando anche una tabella di raccordo ...).
    La tabella SEDI avrà quindi un riferimento ad un cliente e ci potranno essere quante sedi vuoi per ogni cliente (e non un massimo di tre...).

  10. #10
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    si ma tanto son gia troppe tre... Ne basterebbe una al max 2... Il mio problema ora è far selezionare la destinazione e passare i valori delle destinazione selezionata in sessione... Cosi che poi nella pagina seguente posso avere cliente ed eventuale destinazione diversa...

  11. #11
    Guest

    Predefinito

    Si, ma il problema è concettuale. Non importa quante in realtà siano, è come sono strutturate.
    Pensa se ad ogni record della tabella SEDI corrispondesse una sola sede, basterebbe passare solo l'id del record interessato. Con la tua costruzione devi passare l'intero indirizzo. Non ti sembra un po' complicatino?

  12. #12
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    sarebbe giusto quello che dici te, se i record non dovessi passarli ad un pdf per effettuare ddt o fatture... altrimenti, purtroppo, si deve utilizzare la doppia tabella...

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da AdminTeclis Visualizza messaggio
    sarebbe giusto quello che dici te, se i record non dovessi passarli ad un pdf per effettuare ddt o fatture... altrimenti, purtroppo, si deve utilizzare la doppia tabella...
    No, scusa.
    Fammi capire.
    Perchè sarebbe giusto ma non lo è poichè devi passare i record ad un pdf ...
    Cosa cambia?
    Una volta estratti i dati, li stampi, li copi, li passi, fai ciò che vuoi ...

  14. #14
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    ti scrivo per filo e per segno quello che dovrei fare...

    Allora io ho una tabella clienti, in questa tabella ho tutte le informazioni che mi servono per far si che in un DDT e/o fattura io possa tranquillamente fare il documento compilando automaticamente i campi da me richiesti...

    La tabella Sedi (che forse è meglio se rinomino ubicazioni) non è altro che un contenitore dove ci vado a mettere le varie destinazioni del cliente GIA INSERITO. Per far si che questo cliente venga riconosciuto uso come campo in comune la partita iva (che per legge è UNIVOCA).
    A questo punto inserendo un cliente base :

    Ragione sociale = Pippo srl
    Indirizzo = via roma,1
    Cap = 00100
    Citta = Roma
    Provincia = RM
    Piva = 12345678901

    Ho tutto per far si che compilo il documento, ma quando devo fare un ddt ed il cliente in questione ha sede legale via roma, 1 00100 roma RM e UBICAZIONE di Esercizio a Via firenze,1 00001 Firenze FI devo poter mettere la destinazione diversa. Ora in questo caso ho una sola ubicazione diversa, la inserisco nella tabella sedi e ottendo :

    Indirizzo1 = Via Firenze,1
    Citta1= Firenze
    Cap1= 00001
    Provincia1= FI
    Piva=12345678901

    Ora, se sto compilando un documento, e selezionando il cliente mi accorgo che ha una destinazione diversa, deve apparire una select dove trovero:

    Via roma,1-00100-Roma-RM
    Via Firenze,1-00001-Firenze-FI

    E selezionando quella di mio interesse passi in sessione i 4 valori, cosi che nella pagina seguente li recupero e creo DDT e/o Fattura...
    Mi sono spiegato meglio ora credo...

  15. #15
    Guest

    Predefinito

    Ok. Quello che vuoi fare è chiaro.
    E continua ad essere non efficiente la tua versione. (efficace si, efficiente no, bada)
    Ma pensa ... passare solo un riferimento (ID) piuttosto che tutto un indirizzo.

  16. #16
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Quindi stando a ciò che dici te, come dovrei modificare le tabelle la query etc? fammi un esempio pratico vediamo se capisco.. sono aperto a consigli...

  17. #17
    Guest

    Predefinito

    Provo a buttare giù due uno scham di massima.

    Immagino una tabella clienti dove registro i dati della sede legale/primaria del cliente

    Clienti:

    idcli
    ragsoc
    indirizzo
    cap
    citta
    prov
    piva

    e la popolo con i dati di tre clienti (MARIO ROSSI, GIUSEPPE BIANCHI, AZIENDA SRL)

    In una separata tabella sedi inserisco, se presenti, le eventuali altre sedi

    Sedi:

    idsede
    idcli
    indirizzo
    cap
    citta
    prov

    e immetto altre due sedi per il cliente MARIO ROSSI e una sede per AZIENDA SRL


    Ora con la query

    Codice PHP:
    SELECT * FROM clienti c LEFT JOIN sedi s ON s.idcli = c.idcli
    Ottendo la seguente tabella

    Codice:
    c.idcli	ragsoc			c.indirizzo		c.cap		c.citta	c.prov	piva	idsede	s.idcli	s.indirizzo		s.cap	s.citta	s.prov
    1	MARIO ROSSI		VIA ROMA, 1		00100		ROMA	RM	001	1	1	VIA FIRENZE, 100	00100	FIRENZE	FI
    1	MARIO ROSSI		VIA ROMA, 1		00100		ROMA	RM	001	2	1	PIAZZA MARTIRI, 3	20100	MILANO	MI
    2	GIUSEPPE BIANCHI	VIA MILANO, 10		20100		MILANO	MI	002						
    3	AZIENDA SRL		PIAZZA EUROPA, 30	90100		PALERMO	PA	003	3	3	VIA MARE, 50	90100	PALERMO		PA
    Immagina poi di volere solo le sedi di MARIO ROSSI.

    Codice PHP:
    SELECT * FROM sedi WHERE idcli = 1
    Oppure vuoi inserire solo la sede MILANESE di MARIO ROSSI, basterà portarmi dietro l'id della sede (2).

  18. #18
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    potrebbe anche andare... ma cosa cambia fondamentalmente dalla mia struttura? Che devo recuperare gli id e passarglieli invece di fare A.I.?Come gestisco poi la select per selezionare le eventuali altre sedi?

  19. #19
    Guest

    Predefinito

    Cambia che a livello logico è più corretta, non hai limiti prefissati al numero di sedi e questo ti aiuta enormemente in caso di cambiamenti futuri.

    Per le selezioni, beh te l'avevo già scritto, avendo l'id del cliente e quello della sede scelta non vedo difficoltà nel recuperare i dati che ti servono.
    Ultima modifica di simpleticket : 28-05-2013 alle ore 17.13.41

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •