2015-04-22 7 views
6

Quindi, ho una tabella, che include 3 colonne: ID, Nome e ParentID. Qualcosa di simile a questo:Come spostare le righe in mysql

ID | Name | ParentID 
1  Root  NULL 
2 Parent #1  1 
3 Parent #1  1 
4 Parent #1  1 
5 Parent #1  1 
6 Child #1  2 
7 Child #1  2 
8 Child #1  3 
9 Child #1  4 
10 Child #1  5 
11 Child #1  5 

Dopo un po 'con la manipolazione di file per utente, l'Ajax manda array con nuovo ordine di righe con le loro identità di. Ad esempio, può essere 4, 10, 2, 3, 11, 1, ecc.

La domanda è: quale query/query è possibile utilizzare, in modo da poter modificare l'ordine delle righe nella tabella? Quindi, ho solo l'ID di riga e nient'altro. E ho bisogno di spostare tutti i dati della riga: con nome e ParentID (non solo ID). Voglio ottenere qualcosa di simile:

ID | Name | ParentID 
1  Root  NULL 
9 Child #1  4 
5 Parent #1  1 
2 Parent #1  1 
3 Parent #1  1 
6 Child #1  2 
7 Child #1  2 
8 Child #1  3 
2 Parent #1  1 
10 Child #1  5 
11 Child #1  5 

Grazie mille.

+5

prendere colum più nominato come prioritario e affatto ajax fuoco tempo aggiornare il Colum priorità, retrive ordine dati per priorità colum – Priyank

+0

Non capisco l'ordine del secondo elenco. Puoi spiegarlo un po 'oltre? Perché quello con ID = 2 è quasi in fondo? – Peanut

+0

@ Priyank57, forse dovresti postare questo come risposta altrimenti potrei farlo invece –

risposta

2

A mio avviso, non si può fare a meno di avere una colonna in più order

Si dovrà creare una nuova colonna order per questo scopo.

Quindi aggiornare la tabella mentre la matrice viene passata.

foreach($passed_array as $order => $val){ 
$q = "Update table SET `order` = $order WHERE ID = $val"; 
// run query here 
} 

EDIT

E quando la visualizzazione dei dati in frontend, query di selezione sarà come

"SELECT * FROM table `Order` BY `order` ASC" 
+0

Per favore dimmi un'altra cosa: se salvi l'ordine come nella seconda lista, l'utente vedrà gli elementi in ordine , come: 1, 9, 5, 2, ecc. o non c'è differenza tra queste due liste e i dati verranno visualizzati sempre dal primo all'ultimo ID? Grazie. –

+0

@TurakVladyslav vedere le modifiche .... Ogni volta che si visualizzano i dati da qualche parte, aggiungere "ordina per order_column" nella query – Umair

+0

Grazie mille. Ho capito –

0

Penso che dovresti creare una nuova colonna di database (weight per esempio, tipo INTEGER) che specificherà il tuo ordine di riga. Dovrebbe essere la soluzione ottimale.