php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.09.2011, 14:58  
Neuer Benutzer
 
Registriert seit: 30.01.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
heinz_ketchup befindet sich auf einem aufstrebenden Ast
Standard error : Subquery returns more than 1 row

Hallo Leute,

leider muss ich heute mein erstes Cross-Posting machen, weil ich im Base-Forum nicht mehr wirklich weiter komme.

Hier der Link auf das Base-Forum mit dem bisherigen Thread:
http://de.openoffice.info/viewtopic.php?t=40673

Und hier meine Problemstellung. Ich möchte einen Faktor pro Kostenstellen-Nr und Konto ermitteln, der den Anteil der Kontensumme in Relation zum Umsatz ausweist.

Planfaktor = ∑ Konto / ∑ Umsatz

PHP-Code:
# Ermittelt Planfaktoren für Erlösschmälerungen und
# variable Kosten in Relation zu aktuellen Ist-Werten

SET @basisjahr 2010;

INSERT INTO planfaktor_test (pf_ktonrpf_kstnrpf_textpf_wertpf_monatpf_jahr)

SELECT 
   konten
.ktoa_nr 10000
   
id_kst_dt,
   
CONCAT('Plan 'ktoa_bezeichnung),
   
SUM(id_wert) / (
   
   
SELECT summe_id_wert FROM 
   
(
   
SELECT 
      SUM
(id_wert) AS summe_id_wert,
      
id_kst_dt
   FROM istdaten
konten 
   WHERE id_jahr 
= @basisjahr AND id_ktonr kto_nr AND konten.ktoa_nr BETWEEN 2 AND 20
   GROUP BY id_kst_dt 
   
) AS t1 
   WHERE t1
.id_kst_dt id_kst_dt),

   
id_monat
   
id_jahr 1

FROM istdaten
kontenkostenstellenkontenart 
WHERE id_jahr 
= @basisjahr AND id_ktonr kto_nr AND konten.ktoa_nr kontenart.ktoa_nr
GROUP BY id_kst_dt 
Wie muss ich meine Sub-Query "SELECT summe_id_wert ...." umgestalten, so dass ich darin nur einen Wert erhalte, mit dem dann weiter gerechnet wird.

Vielen Dank für eure Hilfe!

Schöne Grüße
Werner
heinz_ketchup ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.09.2011, 15:04  
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

Und wie dein Datenmodell aussieht, sollen wir jetzt raten oder uns aus dem Code herleiten …?

Bitte beschreibe es, in der nötigen Ausführlichkeit.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 08.09.2011, 15:16  
Neuer Benutzer
 
Registriert seit: 30.01.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
heinz_ketchup befindet sich auf einem aufstrebenden Ast
Standard

Hallo Chris,

leider weiß ich nicht ganz was Du meinst. Ich versuche es mal.

Ich habe eine Tabelle "istdaten" darin befinden sich die Kontenbuchungen. Ich gruppiere die Konten über eine Steuertabelle "konten" zu Kontengruppen.

Nun möchte ich die Summe der Buchungswerte eines Jahres der Kontengruppe "Kosten (100)" durch die Summe der Buchungswerte Kontengruppe "Umsatz (2)" dividieren, um die Prozentrelation (Planfaktoren) der Kosten zu ermitteln.

Schöne Grüße
Werner
heinz_ketchup ist offline   Mit Zitat antworten
Alt 08.09.2011, 15:55  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hm.. am besten wird wohl sein, du startest mal phpmyadmin (bzw besuchst dessen Web-Interface) und dann im SQL-Fenster
Code:
show create table TABELLENNAME
natürlich ersetzt du TABELLENNAME der Reihe nach durch die Namen der Tabellen, die du für diese spezielle Abfrage "abklapperst" - die Ausgabe von phpmyadmin kopierst du dann bitte mal hier in einen Beitrag - am besten in [ code ] - bbTags
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 09.09.2011, 08:22  
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

Rein mathematisch. Das folgende funktioniert:
Code:
16/4
Das hier ist aber logischer Blödsinn:
Code:
16 / (4 und 2)
Sprich: Wenn dein Subquery mehr wie einen Datensatz zurückgibt, weiss das MySQL damit nichts sinnvolles anzufangen. Genau das ist dein Fehler. Also: Gucken, wieso dein Datensatz mehr wie eine Zeile zurückliefert. Auf den ersten Blick würde ich behaupten, dass du durch die gleiche Benennung der Spalten ein Bezugsproblem hast. Da ich aber grundsätzlich sowas als Join fomuliere und nicht als Subquery kann ich dir nicht sagen, ob das wirklich das Problem ist. Mach aber spasseshalber mal folgendes:
Code:
# Ermittelt Planfaktoren für Erlösschmälerungen und 
# variable Kosten in Relation zu aktuellen Ist-Werten 

SET @basisjahr = 2010; 

INSERT INTO planfaktor_test (pf_ktonr, pf_kstnr, pf_text, pf_wert, pf_monat, pf_jahr) 

SELECT  
   konten.ktoa_nr + 10000,  
   id_kst_dt, 
   CONCAT('Plan ', ktoa_bezeichnung), 
   SUM(id_wert) / ( 
    
   SELECT summe_id_wert FROM  
   ( 
   SELECT  
      SUM(id_wert) AS summe_id_wert, 
      id_kst_dt as id2
   FROM istdaten, konten  
   WHERE id_jahr = @basisjahr AND id_ktonr = kto_nr AND konten.ktoa_nr BETWEEN 2 AND 20 
   GROUP BY id_kst_dt  
   ) AS t1  
   WHERE t1.id2 = id_kst_dt), 

   id_monat,  
   id_jahr + 1 

FROM istdaten, konten, kostenstellen, kontenart  
WHERE id_jahr = @basisjahr AND id_ktonr = kto_nr AND konten.ktoa_nr = kontenart.ktoa_nr 
GROUP BY id_kst_dt
Meine Vermutung ist, dass deine WHERE-Bedingung im Subquery (WHERE t1.id_kst_dt = id_kst_dt) die Spalte mit sich selbst vergleicht und nicht mit dem relevanten Datensatz deiner eigentlichen Query. Wenn MySQL nun gar meldet, dass die Spalte unbekannt ist an exakt dieser Stelle, dann liegt es genau daran.
__________________
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
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
Daten mehrerer Felder in ein Feld schreiben(z.B. pipegetrennt) jagr2510 Datenbanken 11 21.06.2011 11:11
[Erledigt] Subquery returns more than 1 row omaronhtm Datenbanken 12 06.01.2009 20:28
bestimmte anzahl an <br> / returns imported_kremser PHP Tipps 2007 7 01.11.2005 14:44
Ausgabe der Auswahlliste PHP Tipps 2005-2 6 21.09.2005 13:43
number of open files to more than 150 Datenbanken 0 22.07.2004 11:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
subquery returns more than 1 row, \subquery returns more than 1 row\, subquery returns more than 1 row select, fehlermeldung subquery returns more than 1 row, select sum( select) subquery returns more than 1 row, php subquery returns more than 1 row, subquery more than one row, sql more than 1 row insert, unterabfrage sql liefert mehr als eine zeile, subquery returns more than one row, sql subquery, subquery in php, suibquery returns more than, unterabfrage variable schreiben, subquery returns more than 1, sql subquery returns more than 1 row, insert subquery returns more than 1 row, sql subquery returns more than 1 row fehlermeldung

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