Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [mysql] Case Else

  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [mysql] Case Else

    Ciao a tutti,
    avrei necessita di costruire una cosa del genere in sql è possibile?

    Codice PHP:
    SELECT FROM interventi 
    LEFT JOIN pdr ON pdr_idpdr 
    int_idpdr 
    IF pdr_tipopdr='1'THEN
    JOIN parcoinst_tll ON parcotll_idpdr 
    pdr_idpdr 
    ELSE if pdr_tipopdr '2' THEN
    LEFT JOIN parcoinst_tlc ON parcotlc_idpdr 
    pdr_idpdr 
    WHERE int_intervento 
    '1200001' 
    In giro non ho trovato nulla e sto diventando pazzo.

    Ciao e grazie a tutti
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    non leggo nel dettaglio, ma il nome della tabella e' il primo che viene risolto dalla query.

    Quella if la dovresti fare prima di impostare la query stessa.

    oppure se il dato 1-2 e' nel db fai una union dove nella prima query metti l'opzione 1 e nella seconda l'opzione 2

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

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    nel caso della union percui mi troverò tutto il records della tabella parcoinst_tll o parcoinst_tlc a null quando uno dei due manca di coerenza e percui sara compito del programma (in questo caso ) php a richiamare uno routine piuttosto che l'altra a fronte di quale record è compilato
    E corretta questa analisi?

    Non ho capito il primo suggerimento che mi sembrava pero molto interessante... mi potresti fare un esempio pratico?
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    Originariamente inviato da Fractals87
    nel caso della union percui mi troverò tutto il records della tabella parcoinst_tll o parcoinst_tlc a null quando uno dei due manca di coerenza e percui sara compito del programma (in questo caso ) php a richiamare uno routine piuttosto che l'altra a fronte di quale record è compilato
    E corretta questa analisi?

    Non ho capito il primo suggerimento che mi sembrava pero molto interessante... mi potresti fare un esempio pratico?
    non si capisce se il valore 1/2 e' un dato che passi tu oppure se deve cercarlo nella tabella. Se li deve cercare in tabella allora fai una union altrimenti la if con il php.

    Codice PHP:
    if($tuo_valore == 1) {
       
    $join "LEFT JOIN parcoinst_tll ON parcotll_idpdr = pdr_idpdr";
       }  else { 
    $join "LEFT JOIN parcoinst_tlc ON parcotlc_idpdr = pdr_idpdr";  }

    $query "SELECT * FROM interventi
                  
    $join
                  WHERE int_intervento = '1200001' "
    ;

    $res mysql_query($query) or die(mysql_error()); 
    Devi solo decidere se si tratta di inner join o left join ...

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

  5. #5
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    il valore 1 e 2 è il rispettivo valore che del record della della prima left join "pdr" in quando questa tabella ha un campo nominato con pdr_tipopdr.
    L'unico valore in input della tabella è int_intervento che è il codice intervento

    Percui per fare un po di chiarezza dato che sono stato molto confusionario la struttura è questa :
    Tabella pdf : ha un campo tipo pdr che a fronte del valore 1 o 2 ha il rispettivo record o sulla tabella parcoinst_tll oppure parcoinst_tlc.

    attualemtne io risolvo cosi ovunque devo tirare fuori il dato..
    faccio prima una select sul pdr tirandomi fuori il pdr e poi eseguo una seconda query che è esattamente quella consigliata da pero.mac......
    Il mio intento era di performare tutto in un'unica query.
    Che mestiere difficile.....essere da soli ancora di più

  6. #6
    Quindi hai due tabelle una _ttl e l'altra _tlc identiche e la tabella interventi si appoggia ad una oppure ad un altra a seconda se un campo e' 1 oppure 2.

    Scusa, ma non facevi prima (e meglio) a fare una tabella sola "parcoinst" con un campo "tipopdr" ttl o tlc? Il campo interventi.tipopdr parrebbe essere univoco, cioe' 1 oppure 2 in altre parole l'intervento puo' essere solo tipo ttl o tlc.

    Le due tabelle sarebbero relazionate tramite gli id, mi chiedo pero' se servono effettivamente queste due tabelle e non ne basterebbe invece una sola. Vedo tutti valori atomici sia in una che nell'altra, dove i record di una sono solo una estensione dei record dell'altra niente di duplicato insomma. Ma e' solo un parere perche' non conosco il tuo progetto.

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

  7. #7
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    fai benissimo a chiederelo anche perchè capisco la difficoltà di compredere con due righe di sql le relazioni che ci sono....

    La relazione precisa sarebbe :

    intervento - pdr - (_tll o _tlc)

    Le tabelle tlc e tll sono totalmetne diverse se non appunto per il codice di aggancio pdr.
    A fronte del tipo pdr si ha la necessità di storicizzare delle informazioni piuttosto che altre ed ecco perche sono state create le due tabelle.

    Possiamo dire che pdr è come se fosse il luogo di intervento tutti codificati nella tabella pdr ... _tll e _tlc sono delle infromazioni accessorie che esistono sono a fronte della tipologia pdr....
    Che mestiere difficile.....essere da soli ancora di più

  8. #8
    quindi se le tabelle hanno struttura diversa non puoi fare la UNION, poi anche la stampa e l'utilizzo del result set saranno pure differenti o almeno lo presumo visto che i contenuti son diversi.

    Pero' pero' .... non mi suona bene che il record di riferimento tra due tabelle sia un codice generico comune a molti pdr dello stesso tipo. Se un intervento e' univoco il rapporto tra interventi e tipo pdr e' di 1 a 1.

    Capisco che il tipo possa essere 1 o 2 ma deve esistere anche una relazione id_record - id_record altrimenti per l'utente con codice int_intervento = '1200001' ti verra' listata tutta la tabella di referimento e non solo quel determinato record.

    Any way... parlo al buio, posso anche sparar fregnacce...


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

  9. #9
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    ci posso essere più intervento per un determinato pdr la relazione uno a uno ce l'ho con pdr- (_tlc o tll) non potevo unificarle queste tabelle perche avevo una tabella gigantesca e all'occorrenza avevo tutti i campi tlc o tll a null
    il codice di aggancio tra pdr e tlc o tll è codice pdr percui
    a fronte dell'intervento richiesto recupero il pdr poi a fronte del pdr vado a recuperare i dati o tlc o tll .... è proprio questo o o che mi porta a creare questa discussione in quanto quest dati li recupero facendo due select che vorrei unificare in una tramite un if nella sintassi sql..... se hai suggerimenti di come disporre i dati ben venga magari ho sbagliato la logica li....
    Che mestiere difficile.....essere da soli ancora di più

  10. #10
    Originariamente inviato da Fractals87
    ci posso essere più intervento per un determinato pdr la relazione uno a uno ce l'ho con pdr- (_tlc o tll) non potevo unificarle queste tabelle perche avevo una tabella gigantesca e all'occorrenza avevo tutti i campi tlc o tll a null
    il codice di aggancio tra pdr e tlc o tll è codice pdr percui
    a fronte dell'intervento richiesto recupero il pdr poi a fronte del pdr vado a recuperare i dati o tlc o tll .... è proprio questo o o che mi porta a creare questa discussione in quanto quest dati li recupero facendo due select che vorrei unificare in una tramite un if nella sintassi sql..... se hai suggerimenti di come disporre i dati ben venga magari ho sbagliato la logica li....
    Va bene identificare il tipo, ma credo sia essenziale anche la "relazione" tra la tabella interventi e il suo relativo record tipo_pdr

    Quando crei/aggiungi un record nelle tabelle pdr ci dovra' ben essere il riferimento all'intervento. Di questo non ne fai cenno.

    interventi -> id_intervento | tipo | altro
    pdr_tlc -> id_tlc | id_intervento | altro
    pdr_tll -> id_tll | id_intervento | altro

    Se non conosci il tipo di intervento .... e questo gia' mi suona male nel senso che si dovrebbe sapere a priori il tipo di intervento, se non conosci lo devi trovare anche perche' andra' a condizionare la struttura della query.

    quindi direi che due query sono necessarie:

    1) per cercare il tipo del dato intervento
    2) valutare (in php) con una if quale script utilizzare (scelta tabella)
    3) eseguire la query usando id_intervento nella join

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

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.