mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 19:59 Benutzername: Passwort: Auto-Login

Thema: Ich benötige eine knackige SQL Befehlskette, mit der man vom 05.09.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Ich benötige eine knackige SQL Befehlskette, mit der man
Seite: 1, 2  Weiter
Autor Nachricht
sunray
Threadersteller

Dabei seit: 11.02.2005
Ort: -
Alter: 62
Geschlecht: Männlich
Verfasst Di 05.09.2006 17:18
Titel

Ich benötige eine knackige SQL Befehlskette, mit der man

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Di 05.09.2006 17:27
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Di 05.09.2006 17:28
Titel

Antworten mit Zitat Zum Seitenanfang

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>;
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
beeviZ

Dabei seit: 30.09.2002
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 05.09.2006 17:31
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
sunray
Threadersteller

Dabei seit: 11.02.2005
Ort: -
Alter: 62
Geschlecht: Männlich
Verfasst Di 05.09.2006 18:52
Titel

Antworten mit Zitat Zum Seitenanfang

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. Au weia!

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
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 05.09.2006 19:31
Titel

Antworten mit Zitat Zum Seitenanfang

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)
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Di 05.09.2006 21:11
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
sunray
Threadersteller

Dabei seit: 11.02.2005
Ort: -
Alter: 62
Geschlecht: Männlich
Verfasst Mi 06.09.2006 10:40
Titel

@ pRiMUS

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
 
Ä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
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.