php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.09.2011, 08:02  
Benutzer
 
Registriert seit: 08.10.2009
Beiträge: 37
PHP-Kenntnisse:
Fortgeschritten
tsunami befindet sich auf einem aufstrebenden Ast
Standard Monatsübersicht erstellen

Hallo zusammen,
ich habe folgende Tabelle.
tabelle1
Felder id,vorname,name,wert1, wert2,wert3,zubehoer,datum

Die Tabelle wird normal gefüllt. Als Besonderheit wird die letze Spalte (zubehoer) mit den ids aus der tabelle2 material gefüllt. In zubehoer stehen
id(aber nicht um 1 erhoeht, sondern um 1000, um die ids unterscheiden zu können; Bsp.: id 3 kommt vor in 3,13,23,...; id 1201 nur in 1201,11201,...)
materialname,wert und gebraucht

Nun möchte ich eine Monatsüberischt erstellen:

PHP-Code:
select sum(tabelle1.wert1)*konstante1 as x,sum(tabelle1.wert2)as y,sum(tabelle1.wert3)as z*konstante3,tabelle2.wert*konstante4/100 as a from tabelle1,tabelle2,where tabelle2.gebraucht=and find_in_set(tabelle2.idtabelle1.material 
group by date_format
(tabelle1.datum,'%%M'order by tabelle1.datum asc
Nun das kuriose. Alle Werte, bis auf das Ergebnis von a sind falsch.
Lasse ich das find_in_set und a aus Tabelle2 weg stimmen alle Ergebnisse, aber a fehlt mir halt.

In der Tabelle material steht eine Besonderheit. die id 999 steht für Kleinmaterial. Gebraucht ist da daher immer 0. Ist das der Knackpunkt?

Ich weiß, dass stringfunktionen nicht optimal sind. Aber dadurch dass ich "gebraucht" eingeführt habe, dürfte die zu durchsuchende Menge bei max 100 liegen.

Danke für euere Ideen/Mühen. Wo liegt der Haken?
mfG
tsunami
tsunami ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.09.2011, 09:14  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von tsunami Beitrag anzeigen
aber nicht um 1 erhoeht, sondern um 1000, um die ids unterscheiden zu können; Bsp.: id 3 kommt vor in 3,13,23,...; id 1201 nur in 1201,11201,...
Hört sich irgendwie krank an.

Zitat:
Zitat von tsunami Beitrag anzeigen
PHP-Code:
select sum(tabelle1.wert1)*konstante1 as x,sum(tabelle1.wert2)as y,sum(tabelle1.wert3)as z*konstante3,tabelle2.wert*konstante4/100 as a from tabelle1,tabelle2,where tabelle2.gebraucht=and find_in_set(tabelle2.idtabelle1.material 
group by date_format
(tabelle1.datum,'%%M'order by tabelle1.datum asc
  1. Das ist keine syntaktisch korrekte SQL-Anweisung. Du solltest also eigentlich überhaupt kein Ergebnis bekommen.
  2. Verwende Zeilenumbrüche.
  3. Es ist üblich, für SQL-Schlüsselwörter Großbuchstaben zu verwenden.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline   Mit Zitat antworten
Alt 21.09.2011, 09:29  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Bitte auch nochmal mit konkreten Beispieldaten posten. Ich war auch einiges verwirrt und hab gerade wenig Lust, darüber nachzudenken.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 21.09.2011, 10:14  
Benutzer
 
Registriert seit: 08.10.2009
Beiträge: 37
PHP-Kenntnisse:
Fortgeschritten
tsunami befindet sich auf einem aufstrebenden Ast
Standard

Ok
PHP-Code:
SELECT sum(tabelle1.wert1)*konstante1 as x,
SUM(tabelle1.wert2)as y,
SUM(tabelle1.wert3)*konstante3 as z,
tabelle2.wert*konstante4/100 as 
FROM tabelle1
,tabelle2 
WHERE tabelle2
.gebraucht=and FIND_IN_SET(tabelle2.id,tabelle1.material
GROUP BY date_format(tabelle1.datum,'%M'ORDER BY tabelle1.datum asc
tabelle1
1|Müller|Frank|1|12|45|2009-2-2|1000,1022
2|Meier|Klaus|43|12|65|2009-2-2|1011,1021
3|Müller|klaudia|53|13|45|2009-2-2|999,1012
4|Müller|dirk|13|17|4|2009-2-2||
...
tabelle2
1000|besen|123|0|
999|kleinmaterial|10|0|
1012|kehrblech|123|0|
1013|radio|13|0|
1022|ringe|113|0|
1023|wischmop|14|1|

Monatsübersicht
Januar|ergebnis1|ergebnis2|ergebnis3|summematerial wert
Februar|ergebnis1|ergebnis2|ergebnis3|summemateria lwert
März|ergebnis1|ergebnis2|ergebnis3|summematerialw ert

Isses nun klarer geworden?
....

Geändert von tsunami (21.09.2011 um 19:09 Uhr).
tsunami ist offline   Mit Zitat antworten
Alt 21.09.2011, 14:50  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von tsunami Beitrag anzeigen
PHP-Code:
select sum(tabelle1.wert1)*konstante1 as x,sum(tabelle1.wert2)as y,sum(tabelle1.wert3)*konstante3 as z,tabelle2.wert*konstante4/100 as a from tabelle1,tabelle2,where tabelle2.gebraucht=and find_in_set(tabelle2.idtabelle1.material 
group by date_format
(tabelle1.datum,'%%M'order by tabelle1.datum asc
  1. Das ist keine syntaktisch korrekte SQL-Anweisung. Du solltest also eigentlich überhaupt kein Ergebnis bekommen.
  2. Verwende Zeilenumbrüche. Dadurch braucht der Leser nicht horizontal Scrollen; dadurch wird die Lesbarkeit erhöht.
  3. Es ist üblich, für SQL-Schlüsselwörter Großbuchstaben zu verwenden. Das hat sich einfach so eingebürgert und erhöht ebenfalls die Lesbarkeit.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline   Mit Zitat antworten
Alt 21.09.2011, 15:06  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Bis auf den von mimomamu benannten syntaktischen fehler ist es durchaus etwas klarer.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 21.09.2011, 15:09  
Benutzer
 
Registriert seit: 08.10.2009
Beiträge: 37
PHP-Kenntnisse:
Fortgeschritten
tsunami befindet sich auf einem aufstrebenden Ast
Standard

Ach ok das %%. Kommt vom sprintf.
tsunami ist offline   Mit Zitat antworten
Alt 21.09.2011, 18:49  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von tsunami Beitrag anzeigen
Als Besonderheit wird die letze Spalte (zubehoer) mit den ids aus der tabelle2 material gefüllt.
Zitat:
Zitat von tsunami Beitrag anzeigen
tabelle1
1|Müller|Frank|1|12|45|2009-2-2|1000,1022
Das ist in der Tat etwas besonderes. Alle anderen Leute normalisieren ihr Datenbankschema: Wikipedia - Normalisierung (Datenbank).

Zitat:
Zitat von tsunami Beitrag anzeigen
PHP-Code:
SELECT sum(tabelle1.wert1)*konstante1 as x,
SUM(tabelle1.wert2)as y,
SUM(tabelle1.wert3)*konstante3 as z,
tabelle2.wert*konstante4/100 as 
FROM tabelle1
,tabelle2 
WHERE tabelle2
.gebraucht=and FIND_IN_SET(tabelle2.idtabelle1.material 
GROUP BY date_format
(tabelle1.datum,'%%M'ORDER BY tabelle1.datum asc
Das ist keine syntaktisch korrekte Datenbankabfrage. Zum Beispiel hat sie fünf öffnende Klammern, aber nur vier schließende.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

Geändert von mimomamu (21.09.2011 um 18:53 Uhr).
mimomamu ist offline   Mit Zitat antworten
Alt 21.09.2011, 18:50  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von tsunami Beitrag anzeigen
Ach ok das %%. Kommt vom sprintf.
Das ist nicht der einzige Fehler. Bei dem find_in_set kommt evtl. noch mehr, jedenfalls ist da einiges abgeschnitten.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 21.09.2011, 19:15  
Benutzer
 
Registriert seit: 08.10.2009
Beiträge: 37
PHP-Kenntnisse:
Fortgeschritten
tsunami befindet sich auf einem aufstrebenden Ast
Standard

So nun ist es korrigiert. Die sql zumindest.
Also statt:
tabelle1
1|Müller|Frank|1|12|45|2009-2-2|1000,1022

soll man
tabelle1
1|Müller|Frank|1|12|45|2009-2-2|1000
tabelle1
2|Müller|Frank|1|12|45|2009-2-2|1022

nehmen? Dann muss ich die doch wieder alle gruppieren. Zudem sind schon etliche Dtaen inn der db. Die wollte ich eigendlich nicht lle neu eingeben.

Nun zurück zum eigendlichen Thema.
Wiekommt das, dass bei einem find_in_set das ergebnis einer anderen spalte verfälscht wird?
Alle ids der material_tabelle werden nach dem vorkommen in tabelle1.zubehoer gesucht und deren wert auf summiert.
tsunami 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
Mit PHP eine Tabelle erstellen JamieFraser PHP Einsteiger 6 10.03.2011 14:40
Auswahlfeld erstellen dr.cox77 PHP Tipps 2010 8 19.11.2010 14:01
[Erledigt] Mysql - Query dynamisch erstellen - String zusammenfügen zoom PHP Tipps 2010 12 19.10.2010 13:50
Websiteteile vom User erstellen lassen magni PHP Tipps 2009 4 15.12.2009 11:17
Kleinen PHP Script "Bannerrotation" aus MySQL-Datenbank erstellen... ispvip PHP Tipps 2009 2 03.11.2009 09:01
PHP Ordner erstellen mit bestimmten Namen matzee PHP Tipps 2009 13 04.09.2009 11:45
[Erledigt] jpeg erstellen aus textstring erstellen Psydl PHP Tipps 2009 16 07.07.2009 18:54
[Erledigt] foreach schleife beim erstellen einer image_map schlägt fehl litterauspirna PHP Tipps 2009 8 25.05.2009 13:04
dta/dtaus-Datei mit Hilfe von PHP erstellen BartTheDevil89 PHP Tipps 2009 4 06.01.2009 14:25
Datei erstellen und schreiben - WICHTIG! MessengerNews! PHP Tipps 2006 12 13.08.2006 22:36
darf keine Datenbank erstellen in phpMyAdmin Datenbanken 2 20.10.2005 19:32
Tabellen erstellen mit einer install.php Datenbanken 2 27.07.2005 23:59
Stammbaum erstellen Riot PHP Tipps 2005 17 13.05.2005 16:32
Ordner erstellen und Datei uploaden Juuro PHP Tipps 2005 6 20.01.2005 21:18
Ordner per Skript erstellen --> Rechte Problem PHP Tipps 2004 2 06.07.2004 14:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php monatsübersicht, monatsübersicht tabelle, php monat übersicht, monatsübersicht erstellen, monatsübersicht in php, monatsübersicht php, php monatsübersicht nach monat summieren, php mysql monatsübersicht, php monatsübersicht mysql, monatsübersicht mit php, monatsübersicht php script, monatsübersichttabelle

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