Visualizzazione dei risultati da 1 a 4 su 4

Discussione: senza auto_increment

  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    senza auto_increment

    come faccio a inserire in un campo (oltre quello id) l'elemento successivo a quello che già c'è?

    codice:
    id  | val1 | ordine
    ----|------|-------
    1   | a    | 1
    2   | a    | 2
    3   | b    | 1
    4   | b    | 2
    io devo inserire 5 - a - (ultimo_elemento)+1

    e il risultato sarebbe
    codice:
    id  | val1 | ordine
    ----|------|-------
    1   | a    | 1
    2   | a    | 2
    3   | b    | 1
    4   | b    | 2
    5   | a    | (ultimo_el)+1
    siccome l'ultimo elemento di tutti quelli ke iniziano per 'A' è 2, quindi sarebbe: 5 | a | 3

    come faccio a fare una cosa del genere?

  2. #2
    Ciao,

    secondo me l'ordine ce l'hai già, lo ricavi da un
    ORDER BY val1, id

    Ad ogni modo se vuoi proprio riempire il campo ordine devi per forza effettuare due query (con un lock della tabella/record per evitare situazioni di concorrenza).

    Forse puoi fare anche così

    INSERT INTO tabella SELECT null, 'a', max(ordine)+1 FROM tabella WHERE val1='a'

    La maggior parte dei RDBMS non te lo permetterebbero ma forse in MySQL è ammissibile, bisogna provare.

    Inoltre non so come si comporti INSERT...SELECT in situazioni di concorrenza

    http://dev.mysql.com/doc/mysql/en/insert-select.html
    per favore NIENTE PVT TECNICI da sconosciuti

  3. #3
    ma se vuoi indicizzare su due campi lo puoi fare benissimo.

    PRIMARY KEY (val1,ordine)


    Crea come chiave primaria val1 e ordine auto_increment. La numerazione sara' distinta per ogni val1 in modo automatico.
    codice:
    val1 | ordine
    a       1
    a       2
    b       1
    b       2
    a       3

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

  4. #4
    Giusto cavolo....e bravo Marketto
    per favore NIENTE PVT TECNICI da sconosciuti

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.