Autor |
Nachricht |
sunray
Threadersteller
Dabei seit: 11.02.2005
Ort: -
Alter: 62
Geschlecht:
|
Verfasst Di 05.09.2006 17:18
Titel Ich benötige eine knackige SQL Befehlskette, mit der man |
|
|
eine Tabellenzeile schrittweise aufwärts bzw. abwärts schieben kann. Also ich habe z.B. 10 durchnummerierte Datenzeilen und möchte jetzt aus Eintrag 3 die Nr 2 machen. Gleichzeitig muss die 2 dann die 3 werden. Klar.
Hallo Programmier Freaks,
Kann mir da jemand weiter helfen?
Vielen Dank.
Gruß, sunray
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Di 05.09.2006 17:27
Titel
|
|
|
Code: |
function shuffle($direction)
{
if ($direction == "up") $sql = ("select spalte from tabelle where spalte < 'sortier_id' order by sid DESC limit 1");
else $sql = ("select spalte from tabelle where spalte > 'sortier_id' order by sid ASC limit 1");
$query = mysql_fetch_array(mysql_query($sql));
$sid_1 = 'sortier_id';
$sid_2 = $query["sortier_id"];
$eqivalent = $sid_1 + $sid_2;
$sql = ("update tabelle set spalte = (". $eqivalent ." - spalte) where spalte in (". $sid_1 .", ". $sid_2 .")");
$query = mysql_query($sql);
}
|
sollte tun. musst halt anpassen
|
|
|
|
|
Anzeige
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Di 05.09.2006 17:28
Titel
|
|
|
Code: | UPDATE table SET id = <nicht belegte id> WHERE id = 3;
UPDATE table SET id = 3 WHERE id = 2;
UPDATE table SET id = 2 WHERE id = <nicht belegte id>; |
|
|
|
|
|
beeviZ
Dabei seit: 30.09.2002
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 05.09.2006 17:31
Titel
|
|
|
hm. oder einfach
Code: | update table set id = id+1; |
keine ahnung ob das geht. wenns n unique key is sicherlich nich weiler dann sicher meckert das die id schon vorhanden sei.
//edit:
theoretisch müsst man dann aber tricksen können. wenns beispielsweise 100 datensätze gibt, machste erst
Code: | update table set id = id+1000; |
und danach
Code: | update table set id = id-999; |
ich seh gerade er will schrittweise erhöhen. naja.
Zuletzt bearbeitet von beeviZ am Di 05.09.2006 17:32, insgesamt 1-mal bearbeitet
|
|
|
|
|
sunray
Threadersteller
Dabei seit: 11.02.2005
Ort: -
Alter: 62
Geschlecht:
|
Verfasst Di 05.09.2006 18:52
Titel
|
|
|
Danke pRiMUS,
aber ich bekomme hier die Fhelermeldung : Fatal error: Cannot redeclare shuffle() in ... usw.
Sieht so aus, als wenn die Funktion schon mal angelegt worden wäre, oder? Hab ich aber nicht gemacht.
Woran kanns liegen?
Gruß, sunray
pRiMUS hat geschrieben: | Code: |
function shuffle($direction)
{
if ($direction == "up") $sql = ("select spalte from tabelle where spalte < 'sortier_id' order by sid DESC limit 1");
else $sql = ("select spalte from tabelle where spalte > 'sortier_id' order by sid ASC limit 1");
$query = mysql_fetch_array(mysql_query($sql));
$sid_1 = 'sortier_id';
$sid_2 = $query["sortier_id"];
$eqivalent = $sid_1 + $sid_2;
$sql = ("update tabelle set spalte = (". $eqivalent ." - spalte) where spalte in (". $sid_1 .", ". $sid_2 .")");
$query = mysql_query($sql);
}
|
sollte tun. musst halt anpassen |
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 05.09.2006 19:31
Titel
|
|
|
Code: | mysql> create table changenumber (id int(11) auto_increment primary key, n int(11));
Query OK, 0 rows affected (0.13 sec)
mysql> insert into changenumber set n=2;
Query OK, 1 row affected (0.05 sec)
mysql> insert into changenumber set n=3;
Query OK, 1 row affected (0.03 sec)
mysql> select * from changenumber;
+----+------+
| id | n |
+----+------+
| 1 | 2 |
| 2 | 3 |
+----+------+
2 rows in set (0.00 sec)
mysql> update changenumber
-> set n = if (n=2,3,2)
-> where n=2 || n=3;
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select * from changenumber;
+----+------+
| id | n |
+----+------+
| 1 | 3 |
| 2 | 2 |
+----+------+
2 rows in set (0.00 sec) |
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Di 05.09.2006 21:11
Titel
|
|
|
sunray hat geschrieben: | aber ich bekomme hier die Fhelermeldung : Fatal error: Cannot redeclare shuffle() in ... usw.
Sieht so aus, als wenn die Funktion schon mal angelegt worden wäre, oder? Hab ich aber nicht gemacht. 8O
Woran kanns liegen? |
Daran: http://de.php.net/shuffle
|
|
|
|
|
sunray
Threadersteller
Dabei seit: 11.02.2005
Ort: -
Alter: 62
Geschlecht:
|
Verfasst Mi 06.09.2006 10:40
Titel @ pRiMUS |
|
|
Hi pRiMUS,
nun bin ich schon ein ganzes Stück weiter. Allerdings bekomme ich jetzt noch den Fehler :
Duplicate entry '1' for key 1UPDATE BoulevardArtikel SET ArtikelNr = (3 - 2) WHERE ArtikelNr in (2, 1)
Was sagst Du?
gruß, sunray
|
|
|
|
|
|
|
|
Ähnliche Themen |
Benötige Vektorgrafik
Benötige Hilfe bei HTML
Welche Software benötige ich ?
Benötige Flash Intro
[Video-Tutorials] Benötige Rat
Benötige Hilfe bei Kontaktformular
|
|