Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [MySql] update flag su record uguali

    buongiorno

    ho una tabella fatta così
    Codice PHP:
    +----+--------+--------+--------+--------+------+
    id record field1 field2 field3 flag |
    +----+--------+--------+--------+--------+------+
    1  7      ab     cc     cx     1    |  <------ QUI
    2  8      hh     ko     oo     1    |
    3  9      hu     nx     ij     1    |
    4  7      ab     cc     cx     1    |
    +----+--------+--------+--------+--------+------+ 
    La tabella, ha un id autoinc., un id record, tre campi field varchar, e un campo flag.

    Dovrei poter formulare un UPDATE (tutto in sql, senza uso del php), che setti flag=0
    dove trova record precedenti aventi i tre field e id record uguali.
    Nell'esempio l'id 1 e l'id 4 hanno tutti i campi uguali.
    L'update dovrebbe settare quindi flag=0 sull'id 1.

    Come posso fare?
    わさび

  2. #2
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Ho provato a formulare questa, prendendo spunto dalla soluzione su questo sito, ma non funziona:

    Codice PHP:
    UPDATE tab t1
    SET
    t1
    .flag 0
    WHERE
    (

      
    SELECT id,record,field1,field2,field3 FROM (
        
    SELECT id,record,field1,field2,field3
        FROM tab 
      
    ) AS t2
      
      WHERE
      t2
    .record t1.record AND
      
    t2.field1 t1.field1 AND
      
    t2.field2 t1.field2 AND
      
    t2.field3 t1.field3 AND
      
    t2.id t1.id AND
      
    t1.flag 1

    ); 
    #1241 - Operand should contain 1 column(s)
    uhm...
    わさび

  3. #3

    Re: [MySql] update flag su record uguali

    Originariamente inviato da Trinità76
    buongiorno

    ho una tabella fatta così
    Codice PHP:
    +----+--------+--------+--------+--------+------+
    id record field1 field2 field3 flag |
    +----+--------+--------+--------+--------+------+
    1  7      ab     cc     cx     1    |  <------ QUI
    2  8      hh     ko     oo     1    |
    3  9      hu     nx     ij     1    |
    4  7      ab     cc     cx     1    |
    +----+--------+--------+--------+--------+------+ 
    La tabella, ha un id autoinc., un id record, tre campi field varchar, e un campo flag.

    Dovrei poter formulare un UPDATE (tutto in sql, senza uso del php), che setti flag=0
    dove trova record precedenti aventi i tre field e id record uguali.
    Nell'esempio l'id 1 e l'id 4 hanno tutti i campi uguali.
    L'update dovrebbe settare quindi flag=0 sull'id 1.

    Come posso fare?
    io non ci ho capito una mazza... prova a spiegarti meglio...
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  4. #4
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    Re: Re: [MySql] update flag su record uguali

    Ciao king size slim ,

    in pratica su una tabella dovrei cercare tutti i record con i campi uguali e settare flag=0 sui record trovati. Tutti i record trovati, eccetto l'ultimo in ordine cronologico.
    come si vede nella tabella esempio che ho fatto
    l'id 1 e il 4 hanno i campi uguali. il prodotto finale deve essere che il 4 rimane con flag=1 e che l'1 (e tutti gli altri precedenti se ci fossero) dovrebbero avere flag=0

    Ora ho risolto comunque.
    Non so se la strada è la più breve, ma l'sql funziona e fa quello che deve fare :-)
    Codice PHP:
    UPDATE tab t1
    SET
    t1
    .flag 0
    WHERE
    t1
    .flag AND t1.record < (

      
    SELECT t2.record FROM (
        
    SELECT *
        
    FROM tab 
        WHERE flag 
    1
      
    ) AS t2
      WHERE
      t2
    .field1 t1.field1 AND
      
    t2.field2 t1.field2 AND
      
    t2.field3 t1.field3 AND
      
    t2.id != t1.id

    ); 
    わさび

  5. #5
    ciao, a occhio e croce hai scritto la query come avrei fatto io ora che ho capito che cosa ti serve
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  6. #6
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Bene allora vuol dire che non l'ho scritta tanto male.
    Non mi è mai capitato di scrivere niente del genere prima... e poi di solito ho l'aiuto del php... invece in questo caso mi serviva dover fare tutto in mysql
    grazie comunque
    わさび

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.