php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.04.2009, 10:00  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard Query später weiter einschränken?

Hallo zusammen,

mein Script soll eine lange Liste an DB Einträgen wiedergeben, die in Gruppen sortiert sind.
Da der Benutzer ganz oben bereits sehen soll, wie viel auf ihn zukommt, schicke ich zunächst ein query a la "SELECT * FROM XYZ WHERE 1" ab.
Anschließend möchte ich dann aber nur noch Einträge, die z.B. folgendem genügen: "SELECT * FROM XYZ WHERE UEBERSCHRIFT=A" usw.
(das ganze ist weitaus komplexer mit dyn. query etc.).
Meine Frage:
Der 2. Aufruf ist ja eine Teilmenge des Ersten. Kann ich mit einem Befehl den ersten Query nehmen und weiter einschränken? (z.B: "SELECT * FROM $query1 WHERE UEBERSCHRIFT=A")

Danke
MatzeMuc86 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 14.04.2009, 10:23  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Probiers doch aus und lass dier die evaluierte Abfrage ausgeben. Dann wirst du
Code:
SELECT * FROM SELECT * FROM XYZ WHERE 1 WHERE UEBERSCHRIFT=A
erhalten. Da siehst du wohl selber, dass das Unsinn ist. Wenn schon dann:
PHP-Code:
$query "
    SELECT * FROM xyz; // "
where 1" kannst du gleich weg lassen
...
$where = "
WHERE ueberschrift 'A'";
$query2 = "
$query $where";
... 
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 14.04.2009, 10:32  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard

OK, danke.

Ich muss wohl etwas ins Detail gehen:

Der Benutzer gibt 2 Jahreszahlen ein:
$ab und $bis
Dann suche ich zunächst ALLES:
PHP-Code:
$query "SELECT * FROM xyz WHERE ab>=$ab AND bis<=$bis" 
Anschließend möchte ich dann aber nur noch genau die Jahreszahlen in einer Schleife ausgeben.
natürlich kann ich da auch wieder den Query hintenraus erweitern.
Ist hierbei soetwas wie: "SELECT * FROM xyz WHERE ueberschrift=a ORDER BY zyx WHERE jahr=2007" zulässig, also dass die ORDER Anweisung in der mitte steht?

Mein eigentlicher gedanke war etwas anders:
PHP-Code:
$result mysql_query("SELECT * FROM xyz");
$eingeschr_result mysql_query ("SELECT * FROM $result WHERE jahr = 2007"); 
Also dass ich nicht den text der Query Abfrage ändere, sondern einen Query erhalte und speichere, anschließend aber weiter einschränke...
MatzeMuc86 ist offline   Mit Zitat antworten
Alt 14.04.2009, 10:49  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MatzeMuc86 Beitrag anzeigen
Ist hierbei soetwas wie: "SELECT * FROM xyz WHERE ueberschrift=a ORDER BY zyx WHERE jahr=2007" zulässig, also dass die ORDER Anweisung in der mitte steht?
Nein, ausserdem hast du dann ja zwei WHERE-Klauseln drin
Zitat:
Zitat von MatzeMuc86 Beitrag anzeigen
Mein eigentlicher gedanke war etwas anders:
PHP-Code:
$result mysql_query("SELECT * FROM xyz");
$eingeschr_result mysql_query ("SELECT * FROM $result WHERE jahr = 2007"); 
Also dass ich nicht den text der Query Abfrage ändere, sondern einen Query erhalte und speichere, anschließend aber weiter einschränke...
Auch das geht natürlich nicht. Wie schon gesagt, wenn schon machst du halt zwei Variablen, eine für dei eigentliche Abfrage, und eine für die WHER-Klausel, die du dann zusammenhängst.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 14.04.2009, 10:53  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lazydog Beitrag anzeigen
Auch das geht natürlich nicht. Wie schon gesagt, wenn schon machst du halt zwei Variablen, eine für dei eigentliche Abfrage, und eine für die WHER-Klausel, die du dann zusammenhängst.
OK, das mache ich bereits, nur frage ich dann ziemlich oft die DB ab und eigentlich ist es jedesmal nur eine Teilmenge, sodass meine Idee die Sache beschleunigt hätte müssen - aber egal, bin dennoch klüger als vorher.

Danke
MatzeMuc86 ist offline   Mit Zitat antworten
Alt 14.04.2009, 10:54  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Wieso willst du überhaupt noch per SQL beschränken? so wie ich das sehe hast du eh schon die datenbank leergefischt, also kannst du ja dein ausschlussverfahren danach in php ausführen.

Oder geht es hier nur um eine Grundsatzfrage?
Squall ist offline   Mit Zitat antworten
Alt 14.04.2009, 11:00  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Squall Beitrag anzeigen
Wieso willst du überhaupt noch per SQL beschränken? so wie ich das sehe hast du eh schon die datenbank leergefischt, also kannst du ja dein ausschlussverfahren danach in php ausführen.

Oder geht es hier nur um eine Grundsatzfrage?
Naja zum einen interessiert es mich prinzipiell, ob soetwas wie "Teilmengen" möglich ist.
Zum anderen wäre das wesentlich leichter bzw. mit weniger Code zu realisieren als mittels PHP.

Ich hole mir derzeit einmal alles um eine Übersicht zu erzeugen und anschließend je nach Eingabe des Users führe ich nochmals mysql_query Befehle aus.

Im Prinzip könnte ich aber auch, so wie Squall meinte (oder irre ich mich gerade?) einmal alles abfragen und dieses Ergebnis dann überprüfen und Teile hiervon wiedergeben.

2 Fragen:
1) Was ist schneller (einmal macht PHP die Arbeit, einmal die DB)
2) Was ist sinnvoller/besser zu realisieren

Danke
MatzeMuc86 ist offline   Mit Zitat antworten
Alt 14.04.2009, 12:52  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Prinzipiel ist es immer am besten wenn du aus der DB nur das rausziehst was du benötigst. Dadurch reduzierst du die abfragezeit und die zeit die der PHP-Parser zum abarbeiten braucht (vorallem wenn du das ergebnis noch mit for- oder foreach-schleifen bearbeitest).

Da du aber die komplette Tabelle hollst, währe es sinnlos nochmal per SQL daten an zu fordern die die sowieso schon hast (wobei es auch davon abhängig ist welche technologie du zum einschränken verwendest).
Squall ist offline   Mit Zitat antworten
Alt 14.04.2009, 12:58  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Squall Beitrag anzeigen
(wobei es auch davon abhängig ist welche technologie du zum einschränken verwendest).
Das macht mich neugierig, was GENAU du damit meinst.

Zum Hintergrund: Es geht um eine Bibliothek, die mittelfristig mehrere 10.000 Einträge hat bei ca. 30 Spalten.

Danke!!!
MatzeMuc86 ist offline   Mit Zitat antworten
Alt 14.04.2009, 14:15  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Sorry, vollkommener quatsch, es ergibt überhaupt keinen Sinn nochmal Daten anzufordern wenn schon alles da ist.
Squall 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
[Erledigt] Query funktioniert nur in PHPMyAdmin verdemis Datenbanken 2 25.01.2009 22:33
[Erledigt] Query mit JOIN funktioniert in PHP nicht (bei mir...) b_i_g_b_o Datenbanken 2 27.11.2008 22:54
Query funktioniert im SQL Query Browser aber nicht in PHP - DB zu groß ? john_the_bad Datenbanken 10 16.09.2008 18:17
Query abbrechen nicon_26 Datenbanken 1 13.02.2008 11:34
Variablen in Query automatisch escapen Maho88 PHP Tipps 2007 10 31.07.2007 08:42
SQL Query Builder gesucht MaMo-Net Beitragsarchiv 10 08.05.2007 21:42
PHP/MySQL: Query wird nicht ausgeführt Zergling-new Tutorials 5 09.05.2006 23:16
query r�cksetzen? Promaetheus PHP Tipps 2007 15 01.12.2005 13:53
Query, was aus einer Tabelle mehrere Summen rausholt Datenbanken 3 14.09.2005 16:45
mysql query fehler Datenbanken 6 19.01.2005 23:44
mysql update query mit mehreren Tabellen funktioniert nicht PHP-Fortgeschrittene 5 08.01.2005 16:29
select query durch if anweisungen splitten Datenbanken 6 06.09.2004 13:46
immer mysql_select_db vor query wenn man pconnect benutzt robo47 PHP Tipps 2004 8 03.09.2004 14:56
mysql Fehler - query was empty Anuschka Datenbanken 2 01.09.2004 00:28
[Erledigt] Query läuft nicht Datenbanken 6 13.08.2004 21:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
query abfrage einschränken, teilmenge aus zwei queries, sql where abfrage weiter einschränken, sql abfrage weiter einschränken, ajax php select einschränken, mysql teilmenge aus 2 abfragen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:44 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