php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.11.2011, 12:06  
Neuer Benutzer
 
Registriert seit: 12.11.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
xulo befindet sich auf einem aufstrebenden Ast
Standard Wert in einter Spalte nur einmal auflisten

Hallo zusammen

Mit

Code:
select
A.BEHAELTER as Behaeltnis,
A.NAME as Name,
A.MENGE as Menge,
sum(E.BETRAG) as Wert_vom_Behaeltnis

from TABELLE1 A, TABELLE2 B, TABELLE3 C, TABELLE4 D
left join TABELLE5 E on E.ID_3 = D.ID_2

where A.ID_2 = B.ID_1
and A.ID_3= D.ID_2
and A.ID_4 = C.ID_1
and C.NR = 123456

GROUP BY A.ID_1
ORDER BY A.BEHAELTER ASC
erhalte ich die gewünschten Daten. Nur wird mir in der letzten Spalte der Gesamtwert vom Behältnis aus der ersten Spalte auf jeder Zeile ausgegeben.
Der Wert sollte dort aber nur einmal stehen, denn der Wert vom Behältnis bleibt unverändert.

Die angehängte Grafik veranschaulicht ist und soll Zustand.
In der oberen Tabelle ist der jetzige Zustand aufgeführt, aber es sollte so sein wie in der Tabelle darunter.

Mit DISTINCT geht das nicht, weil da müssten ja alle Werte einer Zeile gleich sein, was hier nicht der Fall ist und deshalb ist die Ausgabe aller Zeilen auch zwingend.

Wie lässt sich das lösen?
Vielen Dank!
Miniaturansicht angehängter Grafiken
wert-einter-spalte-nur-einmal-auflisten-werte-einter-spalte-nur-einmal-ausgeben.jpg  
xulo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.11.2011, 12:23  
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

Direkt in SQL wird das vermutlich komplexer.

Wenn es dir reicht, das erst bei der Verarbeitung der Daten scriptseitig zu machen, lautet das Stichwort Gruppenbruch.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 12.11.2011, 13:17  
Neuer Benutzer
 
Registriert seit: 12.11.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
xulo befindet sich auf einem aufstrebenden Ast
Standard

Danke für deine Info!

Optimal wäre vorweg per SQL, denn nachher werden die Datensätze nicht mit PHP weiterverarbeitet.
xulo ist offline   Mit Zitat antworten
Alt 12.11.2011, 13:26  
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

Dann könntest du dir noch die Option WITH ROLLUP anschauen – die liefert dir den Wert aber in einer extra Zeile, nicht in der ersten „Daten“-Zeile einer Gruppierung.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 12.11.2011, 14:22  
Neuer Benutzer
 
Registriert seit: 12.11.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
xulo befindet sich auf einem aufstrebenden Ast
Standard

Geht leider auch nicht. Schlussendlich wird die Summe aus Wert_vom_Behaeltnis
gebildet. Daher darf dort der Wert nur einmal drinstehen.

Habe ich also wie in der Grafik gezeigt dreimal die Früchteschale, so muss die Summe aus den Werten in "Wert_vom_Behaeltnis" 10 sein, und nicht 30. Eine Früchteschale ist = 10. Durch das mehrmalige aufführen der 10 (einmal pro Datensatz) ist die Summe falsch (30).

Gäbe es eine Möglichkeit vorweg die Datensätze zu zählen und dann den Wert in "Wert_vom_Behaeltnis" durch die Anzahl zu teilen? Der Wert in der Spalte "Wert_vom_Behaeltnis" wäre dann zwar falsch (3,33333333), da aber nachträglich alles summiert wird, müsste es wieder stimmen.

Wohl nicht eine elegante Lösung, aber eine Möglichkeit?
xulo ist offline   Mit Zitat antworten
Alt 12.11.2011, 14:47  
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

Über „Eleganz“ brauchen wir wohl nicht viel diskutieren – denn durch die besticht ja schon deine letztendlich gewünschte Ausgabe nicht . Dass der Wert in der ersten Datenzeile für ein „Behältnis“ gleich die Summe der einzelnen Posten darstellen soll, ist für den Betrachter in dieser Darstellung überhaupt nicht zweifelsfrei erkennbar.

Zitat:
Zitat von xulo Beitrag anzeigen
Geht leider auch nicht. Schlussendlich wird die Summe aus Wert_vom_Behaeltnis gebildet. Daher darf dort der Wert nur einmal drinstehen.

Habe ich also wie in der Grafik gezeigt dreimal die Früchteschale, so muss die Summe aus den Werten in "Wert_vom_Behaeltnis" 10 sein, und nicht 30. Eine Früchteschale ist = 10. Durch das mehrmalige aufführen der 10 (einmal pro Datensatz) ist die Summe falsch (30).
Warum ist die Preisinformation 10 dann an jedem einzelnen der Datensätze, die zusammen die Früchteschale bilden, einzeln hinterlegt?

Das klingt stark danach, als ob schon das zugrunde liegende Datenmodell fehlerhaft wäre. (Zu dem du dich bisher noch nicht wirklich geäußert hast.)
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 12.11.2011, 17:24  
Neuer Benutzer
 
Registriert seit: 12.11.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
xulo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Dass der Wert in der ersten Datenzeile für ein „Behältnis“ gleich die Summe der einzelnen Posten darstellen soll, ist für den Betrachter in dieser Darstellung überhaupt nicht zweifelsfrei erkennbar.
Das stimmt. Ich dachte nicht, dass dies wichtig sei, weil ich hoffte/dachte, dass es eine Art "erweiterter DISTINCT" gäbe den ich noch nicht entdeckt hätte.

Also als Antwort in etwa so: Guck dir yxz genau an, damit geht es.
Offenbar gibt es das nicht.


Zitat:
Zitat von ChrisB Beitrag anzeigen
Warum ist die Preisinformation 10 dann an jedem einzelnen der Datensätze, die zusammen die Früchteschale bilden, einzeln hinterlegt?
Das ist sie nicht. Der Preis der Früchteschale samt Inhalt ist in Tabelle 5 hinterlegt.
Die Früchte selbst in Tabelle 1. Je mehr Früchte sich in Tabelle 1 befinden und der Früchteschale zugeordned sind, umso höher der Wert der ganzen Früchteschale.

Habe es auch mit GROUP_CONCAT versucht, geht auch nicht.

Wenn es nicht geht, dann geht es nicht. Wie schon erwähnt hoffte ich auf die "unentdeckte", eher einfache Möglichkeit.
xulo ist offline   Mit Zitat antworten
Alt 12.11.2011, 20:39  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht hilft das hier: http://dev.mysql.com/doc/refman/5.1/...en-fields.html
achtelpetit ist offline   Mit Zitat antworten
Alt 12.11.2011, 21:08  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Eine Datenbank liefert eine Datenmenge, keine Sicht auf die Daten. Die Datenmenge ist dabei immer eine 2-dimensionale, in sich konsistente Matrix. Wenn Du kombinierte Daten hast, werden sich dabei Daten wiederholen.
Das gewünschte Ergebnis erhältst Du, indem Du die Daten in einer geeigneten Datenverarbeitungssoftware weiterverarbeitest oder darstellst.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 12.11.2011, 21:13  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

@Nikosch
Das mag soweit richtig sein, was Du sagst. Aber bei MSAccess (z. B.) gibt es die SQL-Befehle "FIRST" und "LAST", die sind bei Gruppierungen sehr nützlich. Mir scheint, in MySQL gibt es die Befehle nicht, aber mit "MIN" oder "MAX" kann man sich in manchen Fällen (wahrscheinlich auch in diesem, hier diskutierten Fall) helfen.
achtelpetit 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] php tabelle - probleme (spaltennamen) dior PHP Tipps 2010 5 11.11.2010 11:59
[Erledigt] Zwei Summen aus einer Spalte krampi Scriptbörse 5 15.04.2010 10:00
[Erledigt] einen Wert mit allen Werten aus Spalte vergleich Rutor PHP Tipps 2009 7 12.01.2010 17:10
[Erledigt] Prüfen, ob ein Wert in der Tabelle ist Inchie PHP Tipps 2008 2 02.07.2008 21:08
[Erledigt] RGB Wert zusammensetzen aus Tabellendaten Thorsten PHP Tipps 2008 2 27.05.2008 11:57
SQL-Problem: Wert in einer Spalte ändern, ohne löschen phyton Datenbanken 8 05.02.2007 20:15
[Erledigt] Wert aus einer Spalte raussuchen Datenbanken 10 05.12.2006 19:16
Durch Spalte definieren, welche Spalte zu ändern ist. CC84 Datenbanken 5 28.11.2006 10:26
spalte rechts ausrichten, text aber trotzdem linksbündig Crypi HTML, Usability und Barrierefreiheit 5 14.09.2006 11:35
nach grösstem (unbekannten) Wert suchen lindner Datenbanken 2 20.08.2006 22:13
array verarbeitung (schlag auf den hinterkopf) PHP Tipps 2007 9 16.11.2005 11:37
Alle Daten aus einer Spalte auflisten Datenbanken 15 25.02.2005 08:42
[Erledigt] Problem: per klick auf Button Wert erhöhen/verringern HTML, Usability und Barrierefreiheit 7 07.10.2004 08:31
Spalte anlegen und in diese Daten einfügen Anuschka PHP Tipps 2004 11 09.08.2004 00:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
namen nur einmal auflisten, php auflisten, alle werte aueinmal auflisten, der wert darf nur 1 mal in der spalte sein, sql attribut werte auflisten, werte einer tabelle ohne wiederholung auflisten php, sql jeden wert nur einmal, werte in spalte nur einmal augeben, werte in einer spalte auflisten, wert einmal pro spalte, wert einer spalte nur einmal, powered by vbulletin wert artwork, sql werte nur einmal pro spalte sicherheit

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