Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von Januar

SELFHTML Forumsarchiv
brauch hilfe bei mySQL

Informationsseite
  1. Seite (DATENBANK) brauch hilfe bei mySQL von gonzoMD, 31. 01. 2007, 14:10
nach unten

brauch hilfe bei mySQL

Die folgende Nachricht zum Thema stammt von: gonzoMD, 31. 01. 2007, 14:10

Hab hier ne Query, und dazu die eine oder andere Frage:


 SELECT
  journal.VRENUM,
  journal.KUN_NAME1,
  journal.KUN_NAME2,
  journal.KUN_NAME3,
  journal.INFO
FROM
  journal
  INNER JOIN journalpos ON (journal.REC_ID = journalpos.JOURNAL_ID)
  INNER JOIN artikel ON (journalpos.ARTIKEL_ID = artikel.REC_ID)
WHERE
  (journal.QUELLE = 3) AND
  (journal.INFO IS NOT NULL) AND
  (journal.INFO) AND
  (journal.INFO NOT LIKE '%vers%') AND
  (journal.INFO NOT LIKE '%storn%') AND
  (artikel.MENGE_AKT >= 0) AND
  (journal.VRENUM NOT LIKE '%STORNO%') AND
  ((journal.SHOP_STATUS = 1) OR
  (journal.SHOP_STATUS = 2))
GROUP BY
  journal.vrenum


Ich möchte hier alle rechnungen (offen oder in Bearbeitung - SHOP_STATUS)ausgebeh (journal), wo einzelne Artikel (journalpos) auch vorhanden oder = 0 sind(MENGE_AKT >=0). Funktioniert so weit, bis auf dass ich das Problem habe, dass durch die Where Klausel
(artikel.MENGE_AKT >= 0)
nicht die journale, sondern die journalpos ausgeschlossen wurden, und demzufolge die 'fehlerhaften' journale trotzdem angezeigt werden.
habs schon mit DISTINCT versuch, hat aber nicht geklappt.
Ich will an der Datenban nichts verändern da ich lediglich ein Frontend dafür entwerfe. (DB: CAO Faktura - falls irgendwer das kennt)

nach obennach unten

brauch hilfe bei mySQL

Die folgende Nachricht zum Thema stammt von: Karl Jansen, 31. 01. 2007, 14:50

Versuche anstatt die Tabelle Artikel komplett einzubinden im Frameblock einen Select-Block einzubinen, in dem du dann auch die Where-Klausel 'MENGE_AKT > 0' angeben kannst. Damit verhinderst du das diese WHERE-Klausel im Hauptselect zu Problemen führst:

INNER JOIN (SELECT ... FROM ARTIKEL WHERE MENGE_AKT >= 0) Art on (...)

»» Hab hier ne Query, und dazu die eine oder andere Frage:
»»
»»
»» SELECT
»»   journal.VRENUM,
»»   journal.KUN_NAME1,
»»   journal.KUN_NAME2,
»»   journal.KUN_NAME3,
»»   journal.INFO
»» FROM
»»   journal
»»   INNER JOIN journalpos ON (journal.REC_ID = journalpos.JOURNAL_ID)
»»   INNER JOIN artikel ON (journalpos.ARTIKEL_ID = artikel.REC_ID)
»» WHERE
»»   (journal.QUELLE = 3) AND
»»   (journal.INFO IS NOT NULL) AND
»»   (journal.INFO) AND
»»   (journal.INFO NOT LIKE '%vers%') AND
»»   (journal.INFO NOT LIKE '%storn%') AND
»»   (artikel.MENGE_AKT >= 0) AND
»»   (journal.VRENUM NOT LIKE '%STORNO%') AND
»»   ((journal.SHOP_STATUS = 1) OR
»»   (journal.SHOP_STATUS = 2))
»» GROUP BY
»»   journal.vrenum
»»

nach obennach unten

brauch hilfe bei mySQL

Die folgende Nachricht zum Thema stammt von: gonzoMD, 31. 01. 2007, 15:09

SELECT
  `journal`.VRENUM,
  `journal`.KUN_NAME1,
  `journal`.KUN_NAME2,
  `journal`.KUN_NAME3,
  `journal`.INFO
FROM
  `journalpos`
 INNER JOIN `journal` ON (`journalpos`.JOURNAL_ID = `journal`.REC_ID)
 INNER JOIN (SELECT artikel.REC_ID FROM ARTIKEL WHERE MENGE_AKT >= 0) on (`journalpos`.ARTIKEL_ID = `artikel`.REC_ID)
WHERE
  (`journal`.QUELLE = 3) AND
  (`journal`.INFO IS NOT NULL) AND
  (`journal`.INFO >= '') AND
  (`journal`.INFO NOT LIKE '%vers%') AND
  (`journal`.INFO NOT LIKE '%storn%') AND
  (`artikel`.MENGE_AKT >= 0) AND
  (`journal`.VRENUM NOT LIKE '%STORNO%') AND
  ((`journal`.SHOP_STATUS = 1) OR
  (`journal`.SHOP_STATUS = 2))
GROUP BY VRENUM;

nach obennach unten

brauch hilfe bei mySQL

Die folgende Nachricht zum Thema stammt von: gonzoMD, 31. 01. 2007, 15:11

hab das so gemacht, krieg aber ne Fehlermeldung:

You have an error in your SQL syntax near '(SELECT artikel.REC_ID FROM ARTIKEL WHERE MENGE_AKT >= 0)  artikel on (`journalp' at line 10

Danke für die Hilfe!!!

nach obennach unten

brauch hilfe bei mySQL

Die folgende Nachricht zum Thema stammt von: Ilja, 31. 01. 2007, 15:14

yo,

zum einen solltest du nur die spalten ausgeben, über die du auch gruppiert hast, nur mysql gibt hierbei keine fehlmeldung aus. zum anderen hast du unnötige klammern gesetzt.

SELECT
  journal.VRENUM,
  journal.KUN_NAME1,
  journal.KUN_NAME2,
  journal.KUN_NAME3,
  journal.INFO
FROM
  journal
INNER JOIN journalpos ON (journal.REC_ID = journalpos.JOURNAL_ID)
INNER JOIN artikel ON (journalpos.ARTIKEL_ID = artikel.REC_ID)
WHERE

  journal.QUELLE = 3 AND
  journal.INFO IS NOT NULL AND <-- diese anweisung ist eventuell überflüssig
  journal.INFO AND <--- hier fehlt doch was ???
  journal.INFO NOT LIKE '%vers%' AND
  journal.INFO NOT LIKE '%storn%' AND
  artikel.MENGE_AKT >= 0 AND
  journal.VRENUM NOT LIKE '%STORNO%' AND
  journal.SHOP_STATUS IN (1, 2)
GROUP BY
  journal.vrenum
  journal.KUN_NAME1,
  journal.KUN_NAME2,
  journal.KUN_NAME3,
  journal.INFO

habe deine anweisung erst mal ein wenig umgeschrieben, bzw. kommentiert. was du genau willst, ist mir leider noch nicht ganz klar.

Ilja

nach obennach unten

brauch hilfe bei mySQL

Die folgende Nachricht zum Thema stammt von: gonzoMD, 31. 01. 2007, 15:50


»» SELECT
»»   journal.VRENUM,
»»   journal.KUN_NAME1,
»»   journal.KUN_NAME2,
»»   journal.KUN_NAME3,
»»   journal.INFO
»» FROM
»»   journal
»» INNER JOIN journalpos ON (journal.REC_ID = journalpos.JOURNAL_ID)
»» INNER JOIN artikel ON (journalpos.ARTIKEL_ID = artikel.REC_ID)
»» WHERE
»»
»»   journal.QUELLE = 3 AND
»»   journal.INFO IS NOT NULL AND <-- diese anweisung ist eventuell überflüssig
»»   journal.INFO AND <--- hier fehlt doch was ???
»»   journal.INFO NOT LIKE '%vers%' AND
»»   journal.INFO NOT LIKE '%storn%' AND
»»   artikel.MENGE_AKT >= 0 AND
»»   journal.VRENUM NOT LIKE '%STORNO%' AND
»»   journal.SHOP_STATUS IN (1, 2)
»» GROUP BY
»»   journal.vrenum
»»   journal.KUN_NAME1,
»»   journal.KUN_NAME2,
»»   journal.KUN_NAME3,
»»   journal.INFO
»»
so bekomm ich nur die selben Ergebnisse, wie vorher.
Also, wie ich die Verknüpfungen habe siehst du ja die MENGE_AKT in den Artikel bezieht zich durch die ID ja auf die Journalpositionen, Wenn ich diese WHERE Klausel >=0 benutze werden die Journalpositionen  herausgefiltert,(bemerkt man nur wenn man nicht gruppiert), ich will aber, dass dann das komplette Journal herausgefiltert wird. (Ein Journal ist eine Rechnung, und Ein Journalpos ist ein Artikel innerhalb der Rechnung. (Unterabfrage, aber Wie?)

nach obennach unten

brauch hilfe bei mySQL

Die folgende Nachricht zum Thema stammt von: Ilja, 31. 01. 2007, 18:54

yo,

»» so bekomm ich nur die selben Ergebnisse, wie vorher.

klar, habe ja erst einmal dir tipps gegeben, was mir so aufgefallen ist. was genau du mit deiner abfrage haben willst, konnte ich leider immer noch nicht verstehen.


»» Also, wie ich die Verknüpfungen habe siehst du ja die MENGE_AKT in den Artikel bezieht zich durch die ID ja auf die Journalpositionen

grundsätzlichhabe ich hier ein verständnisproblem. die spalten MENGE_AKT schließt datensätze in der tabelle artikel aus. dadurch, dass du einen inner join mit den anderen tabellen bildest, wirkt sich das natürlich auf die ergebnismenge aus. aber das ist nicht zwangsläufig so.

»» Wenn ich diese WHERE Klausel >=0 benutze werden die Journalpositionen  herausgefiltert,(bemerkt man nur wenn man nicht gruppiert), ich will aber, dass dann das komplette Journal herausgefiltert wird.

wie gesagt, diese aussagen verstehe ich leider noch nicht. aber versuch mal zu erklären, was du willst, ohne auf die abfrage einzugehen. vielleicht wird es dann klarer.

Ilja

nach obennach unten

brauch hilfe bei mySQL

Die folgende Nachricht zum Thema stammt von: _King Lully, 31. 01. 2007, 19:15

Bevor da weitergemurkst wird:
Nicht schlecht wäre es, wenn Du Datentabellen ggf. incl. Beschreibung einzelner Datenfelder lieferst und dann die gewünschte Abfrage möglichst präzise beschreibst und zudem das Problem isolierst, also den Punkt benennst, wo es ungewollt oder gar nicht mehr funzt. (Dabei gehen wir davon aus, dass die Abfrage substantiell in Ordnung ist, also Teilergebnisse liefert. Sollte das nicht der Fall sein, auch das bitte angeben.)

Es lohnt sich bei solchen Problemen meist ein wenig Zeit in die genaue Problemschreibung zu investieren.

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von Januar

© 1998-2006 Seite Impressum, Software: Classic Forum