Announcement

Collapse
No announcement yet.

Nur bestimmte Zeilen Summieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nur bestimmte Zeilen Summieren

    hallo zusammen,

    ich steh gerade mit einer view etwas aufm schlauch...
    problem ist: ich habe 2 sichten. die eine enthält alle gelieferten artikel. die andere alle abgeholten artikel.

    hier mal die inhalte der abgeholten artikel:

    Code:
    msgid		orderno		msg_time		objectno	pos_latitude	pos_longitude	pos_text	user_text
    6699387522	A251109_001	2009-11-25T09:31:57Z	007		0			0	 	 	6
    6699417054	A251109_002	2009-11-25T09:35:13Z	007		0			0	 		6
    6699816271	A251109_003	2009-11-25T10:19:46Z	007		0			0	 		7
    hier die inhalte der gelieferten artikel

    Code:
    msgid		orderno		msg_time		objectno	pos_latitude	pos_longitude	pos_text	user_text
    6699313716	T251109_002	2009-11-25T09:24:14Z	007		0			0			15
    6699727957	T251109_003	2009-11-25T10:09:48Z	007		0			0	 		10
    hier die tabelle, welche die msgid zu der orderno zuordnet, welche die artikel abgeholt hat

    Code:
    orderid		msgid
    A251109_003	6699727957
    A251109_002	6699313716
    A251109_001	6699313716
    zur beschreibung: ich habe gelieferte artikel. hier einmal 10 und einmal 15 stück.
    von den gelieferten 10 stück wurden bereits 7 abgeholt.
    von den gelieferten 15 stück wurden insgesamt 12 abgeholt.
    ziel ist, dass in der sicht die gelieferten und abgeholten artikel verrechnet werden.
    also soll noch dastehen: geliefert 3 stück und nochmal 3 stück.
    ich dachte halt erst alle abgeholten artikel, die zu einer msgid gehören zu addieren und dann von der gelieferten menge abzuziehen. oder ist das zu umständlich?

    wie mach ich das?

    wäre für hilfe dabkbar!

    bye, Christian.
    Zuletzt editiert von Chrischaaan; 27.11.2009, 01:43.

  • #2
    Originally posted by Chrischaaan View Post
    ich dachte halt erst alle abgeholten artikel, die zu einer msgid gehören zu addieren und dann von der gelieferten menge abzuziehen. oder ist das zu umständlich?
    Es wird dir wohl kaum etwas anderes übrig zu bleiben, als alle abgeholten und alle gelieferten zu addieren und anschließen die Differenz zu bilden.
    "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

    Viele Grüße Novi

    Comment


    • #3
      hallo,

      man könnte ja statt 15-(6+6) ja auch 15-6-6 rechnen. ohne summieren eben.
      aber wie mach ich das summieren am besten? wie muss der join aussehen?

      vielen dank, Christian.

      Comment


      • #4
        hallo,

        ich will nicht nerven; trotzdem pushe ich den eintrag nochmal nach oben. kann mir jemand sagen wie ich den join anlegen muss, damit zunächst alle gelieferten und alle abgeholten artikel zusammengerechnet werden?

        das verrechnen der werte würde ich dann wieder über eine sicht machen...

        vielen dank schonmal, Christian.

        Comment


        • #5
          Hallo,

          der Join könnte in etwa so aussehen:

          [highlight=sql]
          select zu.msgid, zu.user_text anz_geliefert, sum(ab.user_text) anz_abgeholt
          from gelieferte_artikel zu
          left join msgid_zu_orderno msg_ord on msg_ord.msgid = zu.msgid
          left join abgeholte_artikel ab on ab.orderno = msg_ord.orderid
          group by zu.msgid, zu.user_text
          [/highlight]

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            hallo,

            vielen dank für den join. der funktioniert bestens. hab ihn mir so angepasst wie ich ihn brauche und jetzt läuft das. werd noch bisschen testen und hoffen dass auch da das gewünschte ergebnis rauskommt.

            besten dank.

            bye, Christian.

            Comment


            • #7
              hallo,

              jetzt ist ein neues problem aufgetreten an dem ich schon wieder seit tagen sitze:

              das obige ergebnis arbeitet weiterhin einwandfrei. ich habe mir eine sicht gemacht, welche die gelieferten artikel anzeigt, eine für die abgeholten und das miteinander verrechnet. funktioniert soweit auch.

              problem ist, dass ja mehr artikel abgeholt werden können als ursprünglich da waren. das heißt, es entsteht ein minus.

              um die artikel abzufragen, die für den ausgleich dieses minusbestands geliefert wurden, habe ich mir wieder eine sicht gemacht. und eben diese funktioniert nicht richtig. es besteht im prinzip das selbe problem wie bei der vorherigen frage auch:

              es muss jeweils die summer der gelieferten mengen gebildet werden, die in der zuordnungstabelle die selbe msgid haben

              Code:
              Ergebnis der Sicht, welche die gelieferten Artikel zum Ausgleich eines Negativen Bestandes enthält
              
              msgid		orderno		msg_time		objectno	pos_latitude	pos_longitude	pos_text	user_text
              6751531383	L031209_003	2009-12-03T17:25:43Z	007		0		0			 	7
              6766371305	L09122009_001	2009-12-07T10:42:45Z	007		0		0	 			6
              6767909368	L09122009_002	2009-12-07T13:42:08Z	007		0		0	 			11
              6773232082	L081209_002	2009-12-08T09:51:57Z	007		0		0			 	6
              6773301905	L081209_003	2009-12-08T10:00:21Z	007		0		0		 		2
              6773327788	L081209_004	2009-12-08T10:03:19Z	007		0		0			 	11
              Code:
              Zuordnungstabelle
              orderid		msgid
              A251109_003	6699727957
              A251109_002	6699313716
              A251109_001	6699313716
              A271109_001	6699727957
              A271109_002	6699313716
              A271109_003	6699313716
              A301109_001	6717968498
              A031209_001	6748919401
              L031209_003	6717968498
              A041209_00	6716241605
              A041209_002	6751303149
              L09122009_001	6716241605
              L09122009_002	6766484106
              A081209_001	6773034942
              A081209_002	6773034942
              A081209_003	6768459462
              A081209_004	6768431005
              L081209_002	6716241605
              L081209_003	6766484106
              L081209_004	6766484106
              Code:
              ergebnis der sicht für gelieferte artikel insgesamt
              
              msgid		orderno		msg_time		objectno	pos_latitude	pos_longitude	pos_text	user_text
              6699313716	T251109_002	2009-11-25T09:24:14Z	007		0		0	 			15
              6699727957	T251109_003	2009-11-25T10:09:48Z	007		0		0	 			10
              6716241605	L271109_001	2009-11-27T13:08:09Z	007		0		0	 			3
              6717968498	L271109_001	2009-11-27T17:11:00Z	007		0		0	 			3
              6748919401	L031209_001	2009-12-03T12:11:30Z	007		0		0		 		10
              6751303149	L031209_002	2009-12-03T16:47:26Z	007		0		0		 		5
              6768431005	T071209_001	2009-12-07T14:42:29Z	007		0		0	 			30
              6768459462	T071209_001	2009-12-07T14:45:48Z	007		0		0	 			30
              6768646695	test		2009-12-07T15:07:38Z	007		0		0	 			7
              6773034942	L081209_001	2009-12-08T09:28:25Z	007		0		0		 		22
              hier werden ja dann sozusagen alle artikel die zum ausgleich des minus geliefert summiert. das ergebnis soll dann wieder (ganz zum schluss) mit verrechnet werden...
              oder kann das garnicht gehen weil gelieferte und abgeholte artikelzuordnungen in der selben tabelle stehen?

              wäre für hilfe sehr dankbar. ich seh den wald vor lauter bäumen nicht mehr...

              bye, Christian.

              ps: ich habe folgenden join probiert, bekomme aber nur NULL werte und 6 zeilen. es müssten theoretisch weniger zeilen sein

              Code:
              SELECT gel.msgid, gel.orderno, gel.msg_time, gel.objectno, gel.pos_latitude, gel.pos_longitude, gel.pos_text, SUM( gel.user_text ) 
              FROM (
              (
              vw_artikel_minusausgleich min
              LEFT JOIN tbl_ttw_orderid_msgid msg_ord ON ( (
              msg_ord.msgid = min.msgid
              ) )
              )
              LEFT JOIN vw_artikel_geliefert gel ON ( (
              gel.orderno = msg_ord.orderid
              ) )
              )
              GROUP BY min.msgid, min.user_text
              Zuletzt editiert von Chrischaaan; 08.12.2009, 14:20.

              Comment

              Working...
              X