php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.09.2011, 20:43  
Benutzer
 
Registriert seit: 15.05.2011
Beiträge: 48
PHP-Kenntnisse:
Anfänger
Mynoriem befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] sql abfragen optimieren

hallo,

ich habe 2 tabellen aus dehnen ich eine bestimmte zelle erhöhen muss.

mein weg dahin klappt einwandfrei, aber ich wollte wissen ob man das ganze ein wenig schöner gestalten kann. Also in einer einzigen query.

PHP-Code:
            $sql "SELECT 
                        id 
                    FROM 
                        users 
                    WHERE 
                        name 
                    LIKE 
                        '"
.$_SESSION['username']."'";
                        
            
$id $GLOBALS['DB']->query($sql);
            
            
$sql "SELECT 
                        richtig 
                    FROM 
                        zehner 
                    JOIN 
                        users 
                    ON 
                        "
.$id[0]['id'].
                    LIKE 
                        zehner.id"
;
                        
            
$result $GLOBALS['DB']->query($sql);
            
            
$totalresult $result[0]['richtig']+1;
            
            
$sql "UPDATE 
                        zehner 
                    SET 
                        richtig = "
.$totalresult.
                    WHERE 
                        id 
                    LIKE 
                        '"
.$id[0]['id']."'";
                        
            
$GLOBALS['DB']->query($sql); 
Mynoriem ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.09.2011, 20:52  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Bitte beschreibe erst mal dein Datenmodell, und was du mit diesen Queries machst.
Einfach nur vollkommen unkommentierten Code ohne jede weitere Erklärung dessen hier abzuladen und dann nach einer „Verbesserung“ zu fragen, ist schon etwas dreist.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 01.09.2011, 20:54  
Neuer Benutzer
 
Registriert seit: 12.08.2011
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
phpler5541 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Mynoriem Beitrag anzeigen
PHP-Code:
SELECT 
                        richtig 
                    FROM 
                        zehner 
                    JOIN 
                        users 
                    ON 
                        
".$id[0]['id']." 
                    
LIKE 
                        zehner
.id 
JOIN users ON 1 LIKE zehner.id
und das erkennt MySql ohne probleme? hart

Code:
UPDATE 
  `zehner` 
SET 
   `richtig` = `richtig` + 1
WHERE
  `id` = ( SELECT `id` FROM `users` WHERE `name` = 'deine PHP Variable' )
phpler5541 ist offline   Mit Zitat antworten
Alt 01.09.2011, 20:59  
Benutzer
 
Registriert seit: 15.05.2011
Beiträge: 48
PHP-Kenntnisse:
Anfänger
Mynoriem befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von phpler5541 Beitrag anzeigen
SELECT
richtig
FROM
zehner
JOIN
users
ON
".$id[0]['id']."
LIKE
zehner.id
und das erkennt MySql ohne probleme? hart
ja erkennt er

zu chrisB : sry

also ich habe eine tabelle users in der halt der user steht mit eindeutiger id.
des weiteren habe ich eine tabelle in der bei richtiger lösung einer aufgabe die zahl in spalte richtig um 1 erhöht werden soll bzw bei falscher antwort der wert der zelle falsch um eins erhöht.
in der tabelle erkenne ich den user an der id die in dieser spalte ebenfalls vorhanden ist.
Mynoriem ist offline   Mit Zitat antworten
Alt 01.09.2011, 21:06  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Mynoriem Beitrag anzeigen
in der tabelle erkenne ich den user an der id die in dieser spalte ebenfalls vorhanden ist.
Und warum hast du die User-ID, die doch ein absolut zentrales Identifikationsmerkmal darstellt, nicht auch gleich in der Session abgelegt, so dass du jederzeit Zugriff darauf hast, ohne sie erst noch mit einer extra Query oder Subquery ermitteln zu müssen?

Dann reduziert sich das ganze nämlich, unter Einbeziehung von phpler5541s Vorschlag, auf
Code:
UPDATE 
  `zehner` 
SET 
   `richtig` = `richtig` + 1
WHERE
  `id` = /*User-ID aus der Session*/
und für den falsch-Fall analog.

Bzw. kannst du auch gleich den Spaltennamen 'richtig' oder 'falsch' vorher einer Variablen zuweisen, so dass du ihn dann nur noch in die Abfrage einsetzen musst - damit reduzieren sich die Stellen, an denen eine Abfrage erfolgt, dann auf genau diese eine.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 01.09.2011, 21:11  
Benutzer
 
Registriert seit: 15.05.2011
Beiträge: 48
PHP-Kenntnisse:
Anfänger
Mynoriem befindet sich auf einem aufstrebenden Ast
Standard

werde ich machen.

thx euch zweien.

also muss das noch mal aufmachen

ich habe die änderungen vorgenommen und so sieht der code aus

Code:
		     	$sql = -"UPDATE 
						zehner 
					SET 
						richtig = richtig + 1
					WHERE
						id = ".$_SESSION['userid']."";
aber es geht nicht in sql geht der befehl wenn ich $xxx durch 1 ersetze.
die variable habe ich auch ausgespuckt und sie ist richtig.

Geändert von Mynoriem (01.09.2011 um 21:38 Uhr). Grund: klappt irgend wie nicht so ganz
Mynoriem ist offline   Mit Zitat antworten
Alt 01.09.2011, 22:11  
Benutzer
 
Registriert seit: 15.05.2011
Beiträge: 48
PHP-Kenntnisse:
Anfänger
Mynoriem befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Mynoriem Beitrag anzeigen
werde ich machen.

thx euch zweien.

also muss das noch mal aufmachen

ich habe die änderungen vorgenommen und so sieht der code aus

Code:
		     	$sql = -"UPDATE 
						zehner 
					SET 
						richtig = richtig + 1
					WHERE
						id = ".$_SESSION['userid']."";
aber es geht nicht in sql geht der befehl wenn ich $xxx durch 1 ersetze.
die variable habe ich auch ausgespuckt und sie ist richtig.
hat sich erledigt!

der gepostete code enthält sogar den fehler.

$sql = -"UPDATE

mit dem minuszeichen kann das nix geben
Mynoriem ist offline   Mit Zitat antworten
Alt 02.09.2011, 00:12  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Bitte versuch mal auf $GLOBALS zu verzichten. Es gibt immerhin Methodenparameter und aehnliches. Ausserdem ist es ein Irrglaube Sessiondaten nicht escapen zu muessen.

Stell dir vor ich nenne mich:
' UNION ALL SELECT '%' --
Dann ueberschreibe ich alle Eintraege deiner Zehner-Tabelle. Mal vorausgesetzt dein Query davor funktioniert ueberhaupt.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL Abfrage optimieren tromton Datenbanken 11 01.08.2011 20:42
SQL Statement mit UPDATE und SELECT: fetch_array Micodat Datenbanken 2 21.04.2011 18:09
[Erledigt] SQL Abfrage escapen wooha PHP Einsteiger 3 18.04.2011 10:13
Probleme mit foreach und SQL abfragen PerHaPs PHP Einsteiger 8 08.04.2011 11:18
Mehrer SQL abfragen phpisyourfreind PHP Einsteiger 2 06.04.2011 21:38
[Erledigt] SQL WHERE ohne mehrere SQL Abfragen Soulstormer Datenbanken 10 01.03.2011 16:26
Problem mit PHP Variablen in SQL Befehl Noahndertaler Datenbanken 2 26.01.2011 17:14
Use The Index, Luke! - SQL Tuning Resource Markus Winand Datenbanken 0 04.12.2010 11:12
False Abfrage und SQL hängt sich auf marc77 Datenbanken 4 22.11.2010 14:57
SQL Datei mit PHP ausführen Kein Genie PHP Tipps 2010 2 09.11.2010 09:52
24 MySql Abfragen optimieren steven001 PHP Tipps 2009 9 18.02.2009 00:00
PHP bzw. mysql abfragen optimieren Kori Datenbanken 3 26.09.2007 21:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql query optimieren joins, sql abfragen optimieren mathematisch, sql optimieren, datenbank abfragen über mehrere tabellen optimieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:59 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum