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 Thema bewerten
  #1 (permalink)  
Alt 26-11-2006, 14:58
peetjoff
 Registrierter Benutzer
Links : Onlinestatus : peetjoff ist offline
Registriert seit: Dec 2004
Beiträge: 48
peetjoff ist zur Zeit noch ein unbeschriebenes Blatt
peetjoff eine Nachricht über Yahoo! schicken
Standard mehrere felder gleichzeitig auslesen

hallo.

ich habe für die schule ein kleines anfängerprojekt zu erledigen.
es geht zwar um eine programmierung innerhalb ABAP,
aber mein problem bezieht sich auf sql:

meine sql abfrage soll mir für jede zeile meiner tabelle
den wert der NAME-spalte sowie den minimalen,
den maximalen und den durchschnittlichen wert
der spalte VALUE ermitteln und diese werte
jeweils in eine variable schreiben, die anschließend
ausgegeben werden soll.

ich habe büchern und quellen im internet folgend
diese abfrage geschrieben:

PHP-Code:

SELECT NAME
MINVALUE ), MAXVALUE ), AVGVALUE 
FROM Tabelle1
INTO PufferName
PufferMinPufferMaxPufferDurchschn 
GROUP BY STOCK
.

writePufferStock.
write25 PufferMin.
write50 PufferMax.
write75 PufferDurchschn.

ENDSELECT
beim ausführen wird aber diese fehlermedung generiert:
"comma without preceding colon (after select?)"

ich denke der code ist formal ok.
aber anscheinen doch nicht!

wenn ich nur ein einziges feld (z.b. NAME) auslesen,
in nur eine einzige variable (z.b. PufferName) speichern
und ausgeben lasse,
dann würde es funktionieren.

was mache ich falsch?
wie gehts richtig?
Mit Zitat antworten
  #2 (permalink)  
Alt 26-11-2006, 20:08
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

In ABAP darfst du beim Selektieren mehrerer Spalten kein Komma verwenden.
(Ausnahme: selektieren direkt in Variablen, die müssen dann abe rin Klammern)

Das Komma ist in dieser Sprache sowas von reserviert, das kann man sich gar nicht vorstellen. Ein Komma wird benutzt um die Anweisung vor dem davor stehenden Doppelpunkt auf mehrere Sachen wirken zu lassen.
Code:
CLEAR result1.
CLEAR result2.
CLEAR result3.
und
Code:
CLEAR: result1, result2, result3.
bewirken das gleiche

Deine Abfrage müsste so aussehen
Code:
SELECT NAME MIN( VALUE ) MAX( VALUE ) AVG( VALUE ) STOCK
FROM Tabelle1
INTO (PufferName, PufferMin, PufferMax, PufferDurchschn, STOCK)
GROUP BY STOCK.
Du musst wenn ich das Recht weiß, auch die Spalte stock selektieren, da du sonst danach nicht gruppieren kannst (Warum? Siehe unten im Teil openSQL)

btw #1:
SELECT - ENDSELECT ist verpönt, steht auch in der Doku
Zumindest beim Debuggen wirst du dir fürchterlich in den A*sch beißen
Besser:
Code:
* Datentypen sind anzupassen
TYPES: 
  begin of ty_result,
    name char20,
    minimum int4,
    maximum int4,
    average float,
    stock int4,
  end of ty_result.

DATA:
  lt_result TYPE TABLE OF ty_result,
  ls_result LIKE LINE OF  lt_result.

SELECT NAME, MIN( VALUE ) aas minimum MAX( VALUE ) as maximum AVG( VALUE ) as average STOCK
FROM Tabelle1
INTO CORRESPONDING FIELDS OF TABLE lt_result
GROUP BY STOCK.

IF sy-subrc <> 0 OR lt_result IS INITIAL.
* Sollte nicht vorkommen, wenn Daten vorhanden sind
  MESSAGE E001(znachrichtenklasse).
ENDIF.

* Ergebnis abarbeiten
LOOP AT lt_result INTO ls_result.
  WRITE pufferstock.
  WRITE ls_result-minimum.
  WRITE ls_result-maximum.
  WRITE ls_result-average.
ENDLOOP.
btw #2:
Eine Ausgabe ist schöner, wenn du das ALV-Grid bemühst, dann kann der Anweder wunderbar sortieren, Spaltenreihenfolge nändern, ...

btw #3:
Das hat nichts mi SQL zu tun, wie wir es hier meinen.
Das was du (ganz richtig) verwendest, schimpft sich OpenSQL und ist ein SQL-Dialekt, den der ABAP-Kernel dann zur Laufzeit transparent in den SQL-Dialekt des zugrundeliegenden DBMS übersetzt (Microsoft, mySQL, Oracle, ...)
Wenn hierbei beim Prüfden/Aktivieren was bemängelt wird, ist das eine Meldung des ABAP-Compilers.

Ein tatsächliches SQL-Problem wäre es, wenn du mit dem Statement EXEC SQL arbeitest, aber des lässt sich nit prüfen, da gibt's höchstens einen unschönen Kurzdump, da ABAP das ungeprüft an die Datenbank weitergibt.

btw #4: Enjoy SAP
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
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

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

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:44 Uhr.