php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 26-05-2004, 14:20
Beyond
 Registrierter Benutzer
Links : Onlinestatus : Beyond ist offline
Registriert seit: Jan 2004
Ort: München
Beiträge: 60
Beyond ist zur Zeit noch ein unbeschriebenes Blatt
Standard Tausende SQL-Queries auf einmal?

Hallo,

ich muss eine Datenbank per php script dynamisch anpassen.
Leider sind dies tausende an queries die ich abschicken muss.
Der Aufruf der update.php läuft sich dann im Browser zu Tode,
d.h. irgendwann ist er "fertig" obwohl noch Abfragen zu tätigen sind.

Frage: Kann man die einzelnen Queries auch zusammenfassen,
d.h. in ein grosses Textfile und dies nachher als eine Query abschicken.

Ein nacheinanderstellen der Befehle:

Code:
UPDATE test_posts SET replyid='5782' WHERE replyid='3282' AND ID_FORUM='2'; 
UPDATE test_posts SET replyid='3586' WHERE replyid='10859' AND ID_FORUM='1';
(Auszug, sind in der Praxis 1000e Befehle)
gibt einen Syntax error

Tips?

Gruss,
Stefan
__________________
Gruss,
Stefan
Mit Zitat antworten
  #2 (permalink)  
Alt 26-05-2004, 14:28
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

deine queries, wie du sie angegeben hast, kann man nicht zusammenfassen.

aber es wirkt sicherlich wunder, wenn man sich vorher über seine db gedanken macht. was hast du denn mit dén ganzen updates vor?
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 26-05-2004, 14:34
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1000 solche Query im PMA ist kein Problem, es geht ruckzuck < 1s.
Irgendwas machst du falsch.
Mit Zitat antworten
  #4 (permalink)  
Alt 26-05-2004, 14:40
Beyond
 Registrierter Benutzer
Links : Onlinestatus : Beyond ist offline
Registriert seit: Jan 2004
Ort: München
Beiträge: 60
Beyond ist zur Zeit noch ein unbeschriebenes Blatt
Standard warum das ganze?

Hi,

Danke für die Antwort.

Warum?
Ganz einfach. Ich habe ein php forum programmiert,
welches schon ein paar mal im einsatz ist.
Nun sollen neue Funktionen usw. eingebaut werden und
ausserdem hat sich herausgestellt, dass manche Tabellen
vom System her falsch designt waren (war damals noch Anfänger).
(<- nun bin ich besserer Anfänger lol)

Also bleibt mir fast nix anderes übrig, als die Struktur upzudaten.
Das ist kein Problem. Nur hier muss ich halt auch die Daten selbst
(sind halt schon tausende Datensätze - sprich Posts etc. - in dem Forum) an die neue Struktur anpassen.

In diesem Konkreten Fall: vorher gab es für jedes Forum eine eigene Tabelle. Es ist aber besser, alle Foren in eine grosse Tabelle "_posts"
zusammenzufassen. Da sich die IDs (=auto_increment) dabei ändern
muss ich auch die ReplyIDs (Antworten auf andere Posts) anpassen
damit diese wieder auf die richtigen Posts zeigen.

Das ganze muss man ja nur einmalig machen.

Gruss,

Stefan
__________________
Gruss,
Stefan
Mit Zitat antworten
  #5 (permalink)  
Alt 26-05-2004, 14:44
Beyond
 Registrierter Benutzer
Links : Onlinestatus : Beyond ist offline
Registriert seit: Jan 2004
Ort: München
Beiträge: 60
Beyond ist zur Zeit noch ein unbeschriebenes Blatt
Standard PMA?

Ok.

@asp2php:

Ok, auch auf die Gefahr hin, mich zu blamieren: Was ist PMA?

Ich mache diese Queries per PHP.
Hier ein Auszug des Teils der so lange dauert:

PHP-Code:
while (list ($oldid,$id) = each($ids))
    {
    
$sql2="UPDATE ".TABLE_POSTS." SET replyid='$id' WHERE replyid='$oldid' AND ID_FORUM='$forum'; \n";
    
$res2=mysql_query($sql2);
    } 
Wobei das array $ids eben tausende Einträge hat.
Ich muss das ganze in der Schleife aufrufen.

Oder kann man das besser lösen?

Gruss,
Stefan
__________________
Gruss,
Stefan
Mit Zitat antworten
  #6 (permalink)  
Alt 26-05-2004, 14:47
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard Re: PMA?

Zitat:
Original geschrieben von Beyond
Ok, auch auf die Gefahr hin, mich zu blamieren: Was ist PMA?
phpMyAdmin
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #7 (permalink)  
Alt 26-05-2004, 14:54
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: PMA?

Zitat:
Original geschrieben von Beyond

PHP-Code:

    $sql2
="UPDATE ".TABLE_POSTS." SET replyid='$id' WHERE replyid='$oldid' AND ID_FORUM='$forum'; \n"
1. die xxxID sind alle Zahlen oder? also weg mit den umschliessenden
'', damit erhöhst du die Abarbeitungsgeschwindigkeit des SQL-Servers,
da keine implizite Typenkonvertierungen vorgenommen werden müssen.

2. Semikolon und \n am Ende haben in einem T-SQL-String nichts zu suchen.

3. mysql_error() hilft dir immer bei Fehlersuche
Mit Zitat antworten
  #8 (permalink)  
Alt 26-05-2004, 16:32
Beyond
 Registrierter Benutzer
Links : Onlinestatus : Beyond ist offline
Registriert seit: Jan 2004
Ort: München
Beiträge: 60
Beyond ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Re: PMA?

....
also weg mit den umschliessenden
'', damit erhöhst du die Abarbeitungsgeschwindigkeit des SQL-Servers,
da keine implizite Typenkonvertierungen vorgenommen werden müssen.
...
Danke!

...
2. Semikolon und \n am Ende haben in einem T-SQL-String nichts zu suchen.
...
Klar. Das war nur ein Test um die Strings aneinanderzureihen.
__________________
Gruss,
Stefan
Mit Zitat antworten
  #9 (permalink)  
Alt 26-05-2004, 16:53
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.274
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Aha ... nach PMA ist's jetzt T-SQL ... ?! ... wat denn nu ... ?!
__________________
carpe noctem

Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
Mit Zitat antworten
  #10 (permalink)  
Alt 26-05-2004, 17:05
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

"t-sql" ist die neueste version von t-offline
__________________
Kissolino.com
Mit Zitat antworten
  #11 (permalink)  
Alt 26-05-2004, 17:14
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von goth
Aha ... nach PMA ist's jetzt T-SQL ... ?! ... wat denn nu ... ?!
nennt man SQL-Commands in MySQL nicht Transact-SQL? Denn rein ANSI 92 sind sie nicht!
Mit Zitat antworten
  #12 (permalink)  
Alt 26-05-2004, 18:17
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.274
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Transact-SQL ist doch eigentlich nur so ein Mickysoft Scheiss ... isn't it ... ?!
__________________
carpe noctem

Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
Mit Zitat antworten
  #13 (permalink)  
Alt 26-05-2004, 20:57
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hahaha, nein, T-SQL ist eine Erweiterung von ANSI-SQL, ursprünglich von Sybase entwickelt und hat sich mit der Zeit entartet und überall eingebürgert. Der eigentliche wahre T-SQL ist nur bei Sybase zu finden. Jedoch MS, Oracle und Co. nennen ihre extensions mittlerweile auch T-SQL. Tja, wenn du was nicht weisst, sollst du dich nicht darüber lustig machen

Geändert von asp2php (27-05-2004 um 00:13 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 27-05-2004, 14:44
Beyond
 Registrierter Benutzer
Links : Onlinestatus : Beyond ist offline
Registriert seit: Jan 2004
Ort: München
Beiträge: 60
Beyond ist zur Zeit noch ein unbeschriebenes Blatt
Question UPDATE Problem. Anderer Ansatz?

Hallo,

ich habe neulich zu diesem Problem schon ein post erstellt, aber hier noch mal meine Tabelle, die mir Kopfzerbrechen bereitet. Vielleicht
gibt es ja noch einen anderen, besseren Ansatz.

Ich habe mehrere Tabellen zusammengefasst zu einer Grossen (musste sein!).

Vorher (z.b. Forum 1):
id replyid text ....
1 0 Frage 1 (zur Verdeutlichung)
2 1 Antwort auf 1
3 0 Frage 2
4 1 Antwort auf 1

Dies waren also mehrere Foren, jede mit eigener Tabelle.
Nun habe ich diese zusammenkopert und mit einer neuen ID_MSG
(auto_inc) versehen. Dazu kam noch eine ID_FORUM für die Differenzierung.

Tabelle "posts" (neu)
ID_MSG oldid replyid text ID_FORUM
1000 1 0 Frage1 1
1001 2 1 Antwort1 1
1002 3 0 Frage2 1
1003 4 1 Antwort1 1

Ok. nun stimmen die replyids nicht mehr. Also muss ich diese anpassen.

Ich habe dies bisher in php in einer Schleife realisiert:

PHP-Code:
while (list ($forum,$name) = each($forums))
    {
    echo 
"<BR>Forum: $forum-$name Step 1/2";
    
$sql1="SELECT ID_MSG,oldid FROM "TABLE_POSTS ." WHERE ID_FORUM='$forum'";
    
$res1=sqlsend($sql1,$lk);
    while (list (
$id,$oldid) = mysql_fetch_array($res1))
        {
        
$ids[$oldid]=$id;
        }
    
reset ($ids);
    echo 
"<BR>Forum: $forum-$name Step 2/2";
    
$sql2=" ";
    while (list (
$oldid,$id) = each($ids))
        {
        
$sql2="UPDATE ".TABLE_POSTS." SET replyid=$id WHERE replyid=$oldid AND ID_FORUM=$forum AND parent=1;";
        
$res2=mysql_query($sql2);
        }
         } 
Frage (endlich ):
Kann man dies über eine geignete SQL-Frage nicht besser lösen?
Ich habe den Verdacht, dass ich mit Kanonen auf Spatzen schiesse
__________________
Gruss,
Stefan
Mit Zitat antworten
  #15 (permalink)  
Alt 27-05-2004, 14:54
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard Re: UPDATE Problem. Anderer Ansatz?

Zitat:
Original geschrieben von Beyond
ich habe neulich zu diesem Problem schon ein post erstellt, [...]
und warum macht du dann einen neuen thread auf?

*ZUSAMMENFÜHR*
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

jqPlot jQuery Plotting Plugin ansehen jqPlot jQuery Plotting Plugin

jqPlot ist ein plotting und charting plugin für das jQuery Javascript framework

06.11.2019 Berni | Kategorie: AJAX/ Framework
WYSIWYG Editor

WYSIWYG Editor zum Einbinden in PHP Scripte.

21.10.2019 Stephan_1972 | Kategorie: PHP/ WYSIWYG
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

10.10.2019 Stephan_1972 | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:26 Uhr.