php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-03-2011, 14:03
Nirus2000
 Registrierter Benutzer
Links : Onlinestatus : Nirus2000 ist offline
Registriert seit: Oct 2010
Beiträge: 28
Nirus2000 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Vergleich mit Zeile davor

Hallo,

folgendes Problem... ich habe eine Abfrage die DESC steht...

z.B.
PHP-Code:
SELECT IDWERT1WERT2  
FROM  
`Tabelle1
WHERE  `id`  = XYZ
ORDER  BY  
`Tabelle1`.`ID`  DESC LIMIT 10 
Soo... Ergebnis sieht dann z.B. so aus

ID | WERT1 | WERT 2
1000 | 16516 | 2156165
800 | 54561 | 16516
25 | 5116 | 1561

Wie ist es möglich, den Wert mit der vorhergehenden Zeile zu vergleichen, also ID 1000 mit 800 und 800 mit 25??
Mit Zitat antworten
  #2 (permalink)  
Alt 31-03-2011, 14:08
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Was willst du damit bezwecken?

Stichwort wäre korrelierte Unterabfrage.
(Ggf. wäre auch ein SELF JOIN möglich, wobei ich mir da gerade nicht ganz vorstellen kann, wie man dort die „vorherige Zeile“ selektiert bekommt.)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 31-03-2011, 14:15
Nirus2000
 Registrierter Benutzer
Links : Onlinestatus : Nirus2000 ist offline
Registriert seit: Oct 2010
Beiträge: 28
Nirus2000 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ich möchte auf der einen Seite den Inhalt limitieren mit max 10 Anzeigen und auf der anderen Seite die Änderungen der Werte darstellen. Also zb. wie weit hat sicht der Wert1 von ID 1000 zu ID 800 geändert.
Mit Zitat antworten
  #4 (permalink)  
Alt 31-03-2011, 14:16
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

warum ermittelst du die Differenz nicht mit PHP? Das wäre doch das einfachste.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 31-03-2011, 14:18
Nirus2000
 Registrierter Benutzer
Links : Onlinestatus : Nirus2000 ist offline
Registriert seit: Oct 2010
Beiträge: 28
Nirus2000 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

hmm... würde ich ja gerne machen, wäre auch zu einfach, aber DESC in MySql ist nun mal nicht ASC...
(rückwärts/vorwärts)

Geändert von Nirus2000 (31-03-2011 um 14:24 Uhr) Grund: Erweiterung
Mit Zitat antworten
  #6 (permalink)  
Alt 31-03-2011, 14:22
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nirus2000 Beitrag anzeigen
hmm... würde ich ja gerne machen, aber DESC ist nun mal nicht ASC...
Dann ist vorhergehende Zeile halt nächste Zeile.

Wenn du unsere Hilfe bei deinem Problem willst, dann beschreibe bitte deutlich und in ausreichender Ausführlichkeit, was dir Probleme bereitet.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 31-03-2011, 14:38
Nirus2000
 Registrierter Benutzer
Links : Onlinestatus : Nirus2000 ist offline
Registriert seit: Oct 2010
Beiträge: 28
Nirus2000 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Gut.... ich versuche es besser zu beschreiben..

die Abfrage vereinfacht...
PHP-Code:
SELECT IDWERT1WERT2  
FROM  
`Tabelle1
WHERE  `id`  = XYZ
ORDER  BY  
`Tabelle1`.`ID`  DESC LIMIT 10 
wird dann wie folgt ausgegeben per While-Schleife ausgegeben:

ID | WERT1 | WERT 2
1000 | 16516 | 2156165
800 | 54561 | 16516
25 | 5116 | 1561

soo...

nun soll der Wert in dieser While-Schleife mit den zuvor ausgegebenen verglichen werden.
Mit der Sortierung ASC ist das kein Problem... in einen Dummy den WERT1 bzw. WERT2 speichern und dann wieder vergleichen.
Da ich aber DESC sortiere, kann ich den Wert nicht in einen Dummy speichern, weil Wert davor noch nicht existiert. Desweiteren sind die ID's nicht fortlaufend sondern unsortiert.

Beispiel anhand von irgendwelchen ID's wie es jetzt ist mit Speicher Variable:

WHILE-ID -> VEGLEICHS-ID
8204 -> 0
5970 -> 8204
5345 -> 5970
4715 -> 5345
4021 -> 4715
3385 -> 4021
2731 -> 3385
2063 -> 2731
1427 -> 2063
779->1427

richtig wäre aber

WHILE-ID -> VEGLEICHS-ID
8204 -> 5970
5970 -> 5345
5345 -> 4715
4715 -> 4021
4021 -> 3385
3385 -> 2731
2731 -> 2063
2063 -> 1427
1427 -> 779
779 -> 0
Mit Zitat antworten
  #8 (permalink)  
Alt 31-03-2011, 14:43
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nirus2000 Beitrag anzeigen
Da ich aber DESC sortiere, kann ich den Wert nicht in einen Dummy speichern, weil Wert davor noch nicht existiert.
Ein „Wert davor“ existiert bei der Verarbeitung des ersten Datensatzes generell nicht, egal wie die Daten sortiert sind.

Er existiert erst ab dem zweiten Datensatz, den dein Script verarbeitet.

Zitat:
Desweiteren sind die ID's nicht fortlaufend sondern unsortiert.
Doch, sie sind sortiert, weil du das in der Query explizit angegeben hast.

Zitat:
richtig wäre aber

WHILE-ID -> VEGLEICHS-ID
8204 -> 5970
5970 -> [...]
Diesen ersten Vergleich kannst du durchführen, sobald du den zweiten Datensatz aus dem Abfrageergebnis geholt hast.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 31-03-2011, 14:45
Nirus2000
 Registrierter Benutzer
Links : Onlinestatus : Nirus2000 ist offline
Registriert seit: Oct 2010
Beiträge: 28
Nirus2000 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

hmm... logisch, aber die Ausgabe findet schon in der While-Schleife statt. Genau das ist mein Problem.
Mit Zitat antworten
  #10 (permalink)  
Alt 31-03-2011, 14:47
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

das ist ja nu noch einfacher ..

hole dir mit einer der mysql_fetch-Funktionen die Erste Zeile aus der Ergebnis-Tabelle

ID 8204 - den gibst du jetzt aber nicht sofort aus, sondern nun beginnt deine while-Schleife,

die liest mit ihrem mysql_fetch nun ihrerseits die 2te Zeile ein - und ab hier gibst du aus

Alte ID , Alte irgendwas , Differenz - Beträge (neue Werte hast du ja )
danach Alte Werte mit den aktuellen Überschreiben und Schleife wieder von vorn
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #11 (permalink)  
Alt 31-03-2011, 14:52
Nirus2000
 Registrierter Benutzer
Links : Onlinestatus : Nirus2000 ist offline
Registriert seit: Oct 2010
Beiträge: 28
Nirus2000 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

hä? Versteh ich net...
Mit Zitat antworten
  #12 (permalink)  
Alt 31-03-2011, 15:03
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Du willst Werte vergleichen, die aber der Reihe nach ankommen. Vergleichen kannst du also erst, wenn der zweite Wert vorliegt und du den ersten gespeichert hast.

Pseudocode:
Code:
vergleichswert = wert_abrufen();
while (neuerwert = wert_abrufen()) {
    differenz = neuerwert - vergleichswert;
    vergleichswert = neuerwert;
}
Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #13 (permalink)  
Alt 31-03-2011, 15:39
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

danke Amica , dein Pseudocode erläutert wunderbar , was mein etwas umständlicher Text aussagen sollte
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #14 (permalink)  
Alt 31-03-2011, 19:22
Nirus2000
 Registrierter Benutzer
Links : Onlinestatus : Nirus2000 ist offline
Registriert seit: Oct 2010
Beiträge: 28
Nirus2000 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

bei mir macht es einfach nicht klick.... wie soll ich den den Vergleichswert aufrufen und dann vergleichen?
Mit Zitat antworten
  #15 (permalink)  
Alt 31-03-2011, 19:27
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nirus2000 Beitrag anzeigen
wie soll ich den den Vergleichswert aufrufen
Mit wert_abrufen() ist in diesem Pseudocode natürlich das Holen des nächsten Datensatzes aus dem Abfrageergebnis gemeint - also die Anwendung einer der mysql_fetch-Funktionen.

Ein bisschen musst du schon logisch mitdenken (können), wenn du sowas mit Tipps von uns umsetzen willst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
RegEx: Begriff und 50 Zeichen davor und 50 danach janein PHP Developer Forum 9 20-04-2008 03:13
sql vergleich... bensen PHP Developer Forum 5 07-12-2006 19:00
Zeile und Zeile auslesen Hatachy SQL / Datenbanken 8 20-07-2003 11:09
ne null davor bitte WeisserRiese PHP Developer Forum 5 24-07-2002 13:59
Teilzeichkette suchen und 50 Zeichen davor und dahinter mitausgeben Thommy PHP Developer Forum 3 25-05-2002 18:17

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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

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