[mysql]iets ertussen voegen

Pagina: 1
Acties:

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 16:00
ik heb in een database een aparte tabel om de volgorde aan te geven, vb:
code:
1
2
3
4
5
6
7
8
id  |  pic
----------
 1  |  5
 2  |  8
 3  |  20
 4  |  1
 5  |  4
 6  |  4

dan met een
code:
1
2
3
4
5
6
7
8
9
select pics.id as picid,
     users.name as username, 
     pics.picloc as picloc, 
     pics.siteloc as siteloc 
from users,
     pics,
     volgorde 
where pics.userid=users.id 
  and volgorde.picsid=pics.id order by volgorde.id desc

komt de info er presiec in de volgorde uit die ik wil :)
een nieuwe pic toevoegen aan de tabel volgorde is niet zn probleem,
maar hoe kan ik bv op id=3 iets toevoegen en dat de rest dan doorschuift?

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

is je id auto_increment?

Doet iets met Cloud (MS/IBM)


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 16:00
ja, maar t is nog geen ramp als dat verandert moet worden, de hele zut zit nog in test(ontwerp) fase :)

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14:16

Crazy D

I think we should take a look.

Auto increment lijkt me voor zo'n tabel toch niet echt gewenst... ik zou eerder denken aan een tabel als
picID | volgorde
5 | 1
8 | 2
...

Die kun je dan misschien nog wel in 1 keer updaten met iets als
update tabelletje
set volgorde = volgorde + 1
where volgorde > 2
(als je de pic op volgorde 3 wilt tussenvoegen)
(maar ik denk dat dat niet de netste oplossing is, maar heb geen zin om te denken * Crazy D == :z

PS kun je de volgende keer je query over meerdere regels verspreiden ? Leest makkelijker en verziekt de layout niet zo... :)

Exact expert nodig?


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Update van alles wat groter is idd de aanpak.
Maar is er geen andere manier te bedenken om de volgorde te bepalen. Het update van een PK is niet iets waar je vrolijk van wordt in een relationele DB.

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Ik zou in de plaatjes-tabel een veld maken waar de volgorde in staat, en daar een unique index op zetten. Als je dan een plaatje wilt invoegen, kan je alsnog dezelfde update uitvoeren. Dit scheelt een tabel, en je zit je primary key niet aan te passen.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Je id's die je gebruikt als een PK, worden in principe alleen binnen je database gebruikt. Daar moet je gewoon niet verder aankomen, niet mee lopen knoeien, wil je een volgorde maken wat flexibel is, zal je dus een extra kolom moeten toevoegen.

Als je wel in je PK-kolom gaat lopen klooien wordt heel je database onbetrouwbaar.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 16:00
k ben berijd alles nog om te gooien, zolang t maar een goede manier is, maar kep eigelijk nog nix gehoord, volgens mij is er gewoon een standaart manier voor, alleen k kan m nie vinden :{

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • Grum
  • Registratie: Juni 2001
  • Niet online
Super_ik: Ik ben bereid alles nog om te gooien, zolang het maar een goede manier is, maar ik heb eigelijk nog niks gehoord, volgens mij is er gewoon een standaard manier voor, alleen ik kan hem niet vinden :{


Er is nu al een paar keer gezegd dat je gewoon een extra column moet toevoegen. Wat is het probleem hiermee ?

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 16:00
Op dinsdag 09 april 2002 12:18 schreef Grum het volgende:
Super_ik: Ik ben bereid alles nog om te gooien, zolang het maar een goede manier is, maar ik heb eigelijk nog niks gehoord, volgens mij is er gewoon een standaard manier voor, alleen ik kan hem niet vinden :{


Er is nu al een paar keer gezegd dat je gewoon een extra column moet toevoegen. Wat is het probleem hiermee ?
dat is geen probleem, maar hoe kan k dan t makkelijkst de volgorde snel omgooien? kun je een voorbeeld geven, of ietsje duidelijker zijn, want als t werkt wat jij bedoelt dan implementeer k t wel :)

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • eborn
  • Registratie: April 2000
  • Laatst online: 08-09 12:50
Dat doe je dus met de bovenstaande methode:

invoegen op positie 2:

pos = pos + 1 where pos > 2
insert met als pos 2

Klaar! Makkelijker gaat niet. Of je moet met relaties tussen objecten gaan werken (elke node heeft dan een parent en een child). Maar of dat sneller is en of je daar op zit te wachten :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Super_ik: dat is geen probleem, maar hoe kan ik dan het makkelijkst de volgorde snel omgooien? kan je een voorbeeld geven, of ietsje duidelijker zijn, want als het werkt wat jij bedoelt dan implementeer ik het wel :)


Sommige dingen zou je zelf ook evt kunnen uitzoeken he :?
Pagina: 1