| Autor |
Nachricht |
sunray
Threadersteller
Dabei seit: 11.02.2005
Ort: -
Alter: 50
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: Nemmberch
Alter: 37
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
|
|
| |
|
 |
tacker
Moderator
Dabei seit: 22.03.2002
Ort: Offenbach am Main
Alter: 31
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: Dortmund
Alter: 18
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: 50
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
Moderator
Dabei seit: 22.03.2002
Ort: Offenbach am Main
Alter: 31
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: 50
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 |
[SQL] Wie 6 Ergebnisse anzeigen ohne ID / andere SQL-Fragen
sql problem..
SQL Abfrage
[php] Warum SQL?
SQL-Syntax
SQL mal wieder
|
 |