Visualizzazione dei risultati da 1 a 4 su 4

Discussione: query mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525

    query mysql

    Salve, devo controllare che all'interno di una tabella non si verifichi la seguente condizione, tramite l'esecuzione di una unica query:
    la condizione da verificare è che non esista più di un record con lo stesso valore di A,B,e C

    Spiego meglio: non deve essere ripetuta la stessa terna di valori in altri record....

    Tramite sql-php è semplice, basta selezionare tutti i record della tabella e scorrendoli all'interno di un ciclo, eseguire la query che ricerca la corrispondenza dei valori del record corrente tra gli altri record....

    Ma dovendo utilizzare solo una query che riporti un insieme vuoto o pieno in base alla situazione? (record unico cn la terna oppure esistiono n record doppi)

    Grazie

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Magari non ho capito benissimo ma se divi solo capire se ci sono valori doppi(anche uno solo) basterebbe fare :

    select count(distinct(campo)) from tabella

    select count(campo) from tabella

    e se c'e' differenza allora ci sono doppioni

    Se poi ti serve anche estrarre i vaolori doppi allora e' un'po' diverso
    La vita e' uno switch();

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    Si , la query è esatta ma il mio intento è diverso.... i dati devono essere legati tra loro e la query soltanto una:

    record | A | B | C |
    1 a b c
    2 e f g
    3 a b c
    4 a w c

    Devo poter rilevare che i record 1 e 3 hanno gli stessi valori nei campi A , B e C

  4. #4
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Gurda... e' un po macchinoso forse nn sapendo come fare con la query ma:

    se provi vedrai che mantendo l'associazione fra i 2 nuovi array per associare poi l'idrecord

    Codice PHP:
    $a = array('idrecord'=> 1'a'=>1'b'=>2'c'=>3);
    $b = array('idrecord'=> 2'a'=>1'b'=>2'c'=>4);
    $c = array('idrecord'=> 3'a'=>1'b'=>2'c'=>5);
    $d = array('idrecord'=> 4'a'=>1'b'=>2'c'=>5);
    $x = array($a$b$c$d);

    echo 
    'array iniziale';
    print 
    '<pre>'print_r($x); print '</pre>';

    $id = array();
    $valori = array();
    foreach(
    $x as $key=>$record){
        
    $id[$key] = $record['idrecord'];
        
        
    $valori[$key] = array('a'=>$record['a'], 'b'=>$record['b'],'c'=>$record['c']);
    }
    echo 
    'solo idrecord';
    print 
    '<pre>'print_r($id); print '</pre>';

    echo 
    ' campi senza idrecord';
    print 
    '<pre>'print_r($valori); print '</pre>';

    $new = array();
    $recordDoppi = array();
    foreach (
    $valori as $key=>$record){ 
        echo 
    'visualizzo un record nel ciclo';
        print 
    '<pre>'print_r($record); print '</pre>';
        
        if(!
    in_array($record,$new)){
            
    $new[] = $record;
        }else{
            
    $giaTrovati[]['idrecord'] = $id[$key];
        }
        
    }
    echo 
    'record doppi';
    print 
    '<pre>'print_r($giaTrovati); print '</pre>';
    echo 
    'unici inseriti nel nuovo array 1 sola volta';
    print 
    '<pre>'print_r($new); print '</pre>'
    In fine in $giaTrovati hai la lista di idrecord che sono gia stati passati dal ciclo e quindi quelli doppi.
    In $new quelli unici coi valori.

    Se modifichi i valori originali vedi come funziona.



    e in
    La vita e' uno switch();

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.