Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    più numeri in uno stesso campo

    Ho un database formato da 2 tabelle
    clienti dove all'interno ho vari campi (idcliente - ........)
    causa dove all'interno ho vai campi (idcausa - Idcliente - ........)

    Per una causa possono esserci + clienti.
    Avevo pensato di fare una cosa del genere per quanto riguarda i clienti.

    (supponiamo che x una causa ci sono 3 persone )
    Inserisco prima i dati dei clienti avrò 3 record Idcliente:
    idcliente = 1 idcliente = 2 idcliente = 3 con i rispettivi dati
    Adesso quando passo alla causa vorrei inserire nel campo Idcliente della tabella cause
    tutti e 3 i record Idcliente precedentemente inseriti.
    Come posso inserire in uno stesso campo + numeri tipo 1,2,3 per poi richiamarli???

    Spero di essermi spiegato


  2. #2
    faresti un errore.

    usa tre tabelle

    clienti
    causa
    unione clienti-causa

    ad ogni unione clienti-causa il suo record

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    la 3° tabella dovrebbe essere composta solo da 3 campi

    id--idcliente--idcausa ???


  4. #4
    Originariamente inviato da cinghialotto35
    la 3° tabella dovrebbe essere composta solo da 3 campi

    id--idcliente--idcausa ???

    se non ti serve altro, direi di si. tutti campi numerici INT... il max della performance con valori atomici, cioe' nessun campo con valori multipli.... che sarebbe poi una piaga da gestire, tipo la relazione molti a molti.... assolutamente da evitare.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    grazie


  6. #6
    allora mi sono creato le 3 tabelle cliente -causa - clientecausa

    1° tabella (cliente): idcliente - .........
    2° tabella (causa) : idcausa - tipo_causa - ......
    3° tabella (clientecausa) : id - idcliente - idcausa - tipo_causa

    Adesso sto cercando di tirarmi fuori solo le cause riferite al tipo e numero di causa o a un certo tipo di cliente

    Codice PHP:
    SELECT FROM clientecausa INNER JOIN causa ON clientecausa.idcausa=causa.numero_pratica INNER JOIN cliente ON clientecausa.idcliente=cliente.idcliente WHERE 
    ((clientecausa.tipo_causa='$tipo_causa'AND clientecausa.idcausa='$num_caus')OR(clientecausa.idcliente='$hiddenField')) 
    ma stò brancolando nel buio

    chenedite???


  7. #7
    mi suonano male quelle parentesi nel where...

    prova:

    codice:
    SELECT * 
    FROM clientecausa 
    LEFT JOIN causa ON clientecausa.idcausa = causa.numero_pratica 
    LEFT JOIN cliente ON clientecausa.idcliente = cliente.idcliente 
    WHERE clientecausa.tipo_causa = '$tipo_causa'
          AND (clientecausa.idcausa = '$num_caus' 
    	      OR 
    	      clientecausa.idcliente = '$hiddenField')

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    nella tabella cause e clientecausa il campo tipo_cause può assumere
    il valore S-CG-PS - PG
    posso avere

    Tabella Cliente

    codice:
    idcliente
        1
        2
        3
        4
        5
    tabella cause

    codice:
     idcausa --  numero_pratica---------tipo_causa
        1      ---        1            --     S
        2     ----        1          ----    PS
        3    ----         2        ------   PS 
        4    ----         1          ----    PG
    Tabella clientecausa

    codice:
    id -- idcliente --  idcausa -- ----tipo_causa 
    1  --    1       --      1      --      S 
    2  --    2       --      1      --      S 
    3  --    4       --      2      --      PS 
    4  --    5      --       1     ---      PG



    La tabellaCause incremente il valore del numero_pratica in base al tipo_causa


    Ho messo la tua query e ho provato

    Codice PHP:
    SELECT FROM clientecausa LEFT JOIN causa ON clientecausa.idcausa causa.numero_pratica LEFT JOIN cliente ON clientecausa.idcliente cliente.idcliente WHERE clientecausa.tipo_causa 'PG' AND (clientecausa.idcausa '1' OR clientecausa.idcliente ''
    mi restituisce tutti quelli che hanno il numero pratica = 1
    quando in realtà ne dovrei avere solo 1


  9. #9
    se and oppure or ... lo devi sapere tu. in base alle parentesi mi era parso di interpretare:

    clientecausa.tipo_causa = '$tipo_causa'

    in AND con

    (clientecausa.idcausa = '1' OR clientecausa.idcliente = '')

    se l'alternativa tua e' invece (tipo_causa in AND con idcausa) OR idcliente = ''

    quell'OR sarebbe micidiale per il risultato. Sembrerebbe quasi una query injection...

    vedi tu quello che ti serve.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Ho partorito questa e sembra funzionare

    Codice PHP:
    SELECT FROM clientecausa INNER JOIN causa ON clientecausa.idcausa=causa.numero_pratica INNER JOIN cliente ON clientecausa.idcliente=cliente.idcliente AND clientecausa.tipo_causa=causa.tipo_causa AND ((clientecausa.tipo_causa='$tipo_causa' AND clientecausa.idcausa='$num_caus')OR(clientecausa.idcliente='$hiddenField')) 
    che ne dici???


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.