Visualizzazione risultati 1 fino 5 di 5

Discussione: Creare indice su due campi, uno univoco in base al primo e autoincrement

  1. #1
    Guest

    Predefinito Creare indice su due campi, uno univoco in base al primo e autoincrement

    Il titolo è impossibile d ascrivere, però vi mostro il mio problema, magari mi trovate una soluzione migliore
    Allora, ho una tabella così formata:
    Codice:
    Campo  		Tipo   		Null  	Predefinito
    cd_id 		mediumint(8) 	No
    cd_num 		tinyint(1) 	No   	0
    cd_h 		tinyint(1) 	No   	0
    cd_m 		tinyint(1) 	No   	0
    cd_s 		tinyint(1) 	No   	0
    cd_type 	tinyint(4) 	No   	0
    Poi un indice:
    Codice:
    Nome chiave	Tipo	Unica	Compresso	Campo	Cardinalità
    cd_id		BTREE	Sì	No 		cd_id	0
    cd_num							3
    Ora, ho fatto in modo che per ogni cd_id univovo ci siano anche il cd_num univoco, esempio:
    Codice:
    cd_id 	cd_num 	cd_h 	cd_m 	cd_s 	cd_type
    1 	1 	0 	47 	19 	0
    1 	2 	1 	1 	1 	1
    2 	1 	1 	1 	1 	0
    Quindi non potrò mai avere:
    Codice:
    cd_id 	cd_num 	cd_h 	cd_m 	cd_s 	cd_type
    1 	1 	0 	47 	19 	0
    1 	1 	1 	1 	1 	1
    1 	4 	1 	1 	1 	1
    1 	4 	1 	1 	1 	1
    2 	1 	1 	1 	1 	0
    Ora, devo fare in modo che cd_num mi si incrementi da solo in base all numero più alto, come se fosse autoincrement, anche se non lo è, perchè varia in base al cd_id.

    Se no nsi è capito o avete una soluzione migliore postate pure

  2. #2
    Guest

    Predefinito

    Conti il numero di elementi che ci sono con quel cd_id e in fase di inserimento metti dentro cd_num quel numero + 1.

  3. #3
    Guest

    Predefinito

    Siccome la condizione per aggiungere un cd si trova prima di fare la query in modo che se l'aggiungo mi mostra tutto aggiornato, avevo pensato di inserire un input hidden in modo da avere il numero, stare tranquillo e inserirne un altro. Altrimenti non si potrebbe fare una query, anche complessa, per esempio usando MAX(), per aumentare il valore?
    Con questa mostro i dati dell'album:
    Codice:
    SELECT *
    	FROM ' . BANDS_ALBUMS_TABLE . '
    	WHERE album_id = ' . $edit_album . '
    		AND album_band = ' . $id
    con questa invece i cd:
    Codice:
    'SELECT *
    	FROM ' . BANDS_ALBUMS_CD_TABLE . '
    	WHERE cd_id = ' . $edit_album
    Con l'ultima posso selezionare MAX(cd_num), assegnare un alias e poi inserire l'input no?

  4. #4
    Guest

    Predefinito

    Si, puoi fare anche così.

  5. #5
    Guest

    Predefinito

    Ho risolto facendo come ho scritto. In una query faccio il COUNT dei valori e poi lo incremento di uno quando inserisco il dato

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •