[gelöst]Inhalte eines bestimmten alters

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst]Inhalte eines bestimmten alters

Re: Inhalte eines bestimmten alters

von DeeJay » Di, 19.08.2008 16:19

juhu

Code: Alles auswählen

SELECT `tbl_Rechnungen`.`Nettosumme` AS `Umsatz je Kunde`, `tbl_Rechnungen`.`LfdAdrNr`, `tbl_Adressen`.`Matchcode`
FROM `wzdb`.`tbl_Rechnungen` AS `tbl_Rechnungen`, `wzdb`.`tbl_Adressen` AS `tbl_Adressen` 
WHERE `tbl_Rechnungen`.`LfdAdrNr` = `tbl_Adressen`.`LfdAdrNr` AND `tbl_Rechnungen`.`ReDatum` > DATE_SUB( CURRENT_DATE, INTERVAL 365 DAY)  ORDER BY `tbl_Rechnungen`.`Nettosumme` DESC
so tut es :)

wobei ich das vermutlich das SQL ausführen wohl der einzigste fehler war *hmpf*

Re: Inhalte eines bestimmten alters

von komma4 » Di, 19.08.2008 15:43

Aktiviere mal in der SQL-Ansicht unter Bearbeiten>SQL-Kommando direkt ausführen!

(der Schalter war hier mal eingestellt - weiss der Kuckuck, warum der weg war.

Damit klappt die Abfrage hier (JDBC):

Code: Alles auswählen

 WHERE `rechnung`.`datum` > DATE_SUB( CURRENT_DATE, INTERVAL 365 DAY) 

War es der Schalter?

Re: Inhalte eines bestimmten alters

von DeeJay » Di, 19.08.2008 14:26

ok ich nutze odbc bzw unixodbc zum verbinden

und nur um es zu verstehen
es ist nen bug/ nicht möglich /absoluter denkfehler?

immerhin läuft die alte "Datenbank" unter Access 97 hier

Re: Inhalte eines bestimmten alters

von komma4 » Di, 19.08.2008 14:18

Tja, würde mal sagen: Pech gehabt ( => könnte ein Ticket sein ).


In StarBasic geht die Abfrage - auch unter Nutzung der Date_Sub()-Funktion.
Im Abfrage-Designer erhalte ich auch:

Code: Alles auswählen

SQL-Status: HY000
Fehler-Code: 1000

syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE

Das könnte auch der Treiber (hier: JDBC) sein, der es nicht zulässt.

Re: Inhalte eines bestimmten alters

von DeeJay » Di, 19.08.2008 13:59

der 1. von beiden codes geht , aber es ergibt sich das selbe wie vorher , er zeigt alles
der 2. code sagt syntax fehler

Re: Inhalte eines bestimmten alters

von komma4 » Di, 19.08.2008 13:55

was kommt denn raus, wenn Du die Einschränkung nach Zeit weg lässt:

Code: Alles auswählen

SELECT `tbl_Rechnungen`.`Nettosumme` AS `Umsatz je Kunde`, `tbl_Rechnungen`.`LfdAdrNr`, `tbl_Adressen`.`Matchcode`
FROM `wzdb`.`tbl_Rechnungen` AS `tbl_Rechnungen`, `wzdb`.`tbl_Adressen` AS `tbl_Adressen`
WHERE `tbl_Rechnungen`.`LfdAdrNr` = `tbl_Adressen`.`LfdAdrNr` 
Wenn diese Abfrage richtig formuliert ist müsstest Du ein Ergebnis bekommen.

und was, wenn die Einschränkung -ohne die Hochkomma- ergänzt wird:
[co

Code: Alles auswählen

ECT `tbl_Rechnungen`.`Nettosumme` AS `Umsatz je Kunde`, `tbl_Rechnungen`.`LfdAdrNr`, `tbl_Adressen`.`Matchcode`
FROM `wzdb`.`tbl_Rechnungen` AS `tbl_Rechnungen`, `wzdb`.`tbl_Adressen` AS `tbl_Adressen`
WHERE `tbl_Rechnungen`.`LfdAdrNr` = `tbl_Adressen`.`LfdAdrNr` AND `tbl_Rechnungen`.`ReDatum` >  DATE_SUB( CURRENT_DATE , INTERVAL 365 DAY )

Re: Inhalte eines bestimmten alters

von DeeJay » Di, 19.08.2008 12:53

Code: Alles auswählen

CREATE TABLE IF NOT EXISTS `tbl_Rechnungen` (
  `LfdReNr` int(11) default NULL,
  `LfdAdrNr` int(11) default NULL,
  `ReDatum` datetime default NULL,
  `Nettosumme` double default NULL,
  `EingangsDatum` datetime default NULL,
  `EingangsKontoauszug` varchar(50) collate latin1_german1_ci default NULL,
  `Mahnstufe` smallint(6) default NULL,
  `Bruttosumme` double default NULL,
  `Bemerkung` varchar(50) collate latin1_german1_ci default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

Code: Alles auswählen

CREATE TABLE IF NOT EXISTS `tbl_Adressen` (
  `LfdAdrNr` int(11) default NULL,
  `Matchcode` varchar(20) collate latin1_german1_ci default NULL,
  `Firma1` varchar(50) collate latin1_german1_ci default NULL,
  `Postfach` varchar(8) collate latin1_german1_ci default NULL,
  `Strasse` varchar(40) collate latin1_german1_ci default NULL,
  `PLZPo` varchar(5) collate latin1_german1_ci default NULL,
  `PLZ` varchar(5) collate latin1_german1_ci default NULL,
  `Ort` varchar(40) collate latin1_german1_ci default NULL,
  `Land` varchar(5) collate latin1_german1_ci default NULL,
  `Branche` varchar(10) collate latin1_german1_ci default NULL,
  `KLASSIFIK` float default NULL,
  `VERTRETUNG` varchar(20) collate latin1_german1_ci default NULL,
  `Rabatt` float default NULL,
  `Firma2` varchar(50) collate latin1_german1_ci default NULL,
  `Kontaktzyklus` int(11) default NULL,
  `KontaktNeu` datetime default NULL,
  `Ursprung` varchar(20) collate latin1_german1_ci default NULL,
  `Zahlungen` int(11) default NULL,
  `Umsatzab94` float default NULL,
  `Waehrung` varchar(20) collate latin1_german1_ci default NULL,
  `GehoertZuAdresse` int(11) default NULL,
  `UeberlieferungErlaubt` bit(1) default NULL,
  `Poster` bit(1) default NULL,
  `Buchhaltung` varchar(15) collate latin1_german1_ci default NULL,
  `Lieferantennummer` varchar(20) collate latin1_german1_ci default NULL,
  `UStIDNr` varchar(20) collate latin1_german1_ci default NULL,
  `BeiAngebotenBeachten` longtext collate latin1_german1_ci,
  `BeiAuftraegenBeachten` longtext collate latin1_german1_ci,
  `Info` longtext collate latin1_german1_ci,
  `Homepage` varchar(50) collate latin1_german1_ci default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
mal etwas ausführlicher ... dies sind die 2 tabellen , diese sind über LfrAdrNr verknüpft

und dann soll das mit den rechnungen rauskommen ...
db1.jpg
db1.jpg (81.67 KiB) 863 mal betrachtet
Dateianhänge
db2.jpg
db2.jpg (122.18 KiB) 860 mal betrachtet

Re: Inhalte eines bestimmten alters

von komma4 » Di, 19.08.2008 12:05

also, was hier geht ist bspw. die Abfrage:

Code: Alles auswählen

SELECT DATE_SUB( CURRENT_DATE,  INTERVAL 365 DAY  ) FROM rechnung


Der Vergleich mit einer als Datetime definierter Spalte funktioniert auch, also:

Code: Alles auswählen

... WHERE dt_created < DATE_SUB( CURRENT_DATE,  INTERVAL 180 DAY  )

Re: Inhalte eines bestimmten alters

von komma4 » Di, 19.08.2008 09:58

DeeJay,

bin mir ziemlich sicher, dass die Anführungszeichen falsch sind, und die BETWEEN-Angabe ist syntaktisch auch nicht richtig.

Wenn ich heute mal etwas Zeit habe probiere ich es aus (habe zufällig 'nen MySQL-Server dabei)...

Re: Inhalte eines bestimmten alters

von DeeJay » Di, 19.08.2008 07:11

Ok also ich hab jetzt noch weiter probiert aber der gibt mir egal was ich tue nicht die Rechnungen
Zwischen Heute und vor einem Jahr aus :(


SELECT `tbl_Rechnungen`.`Nettosumme` AS `Umsatz je Kunde`, `tbl_Rechnungen`.`LfdAdrNr`, `tbl_Adressen`.`Matchcode` FROM `wzdb`.`tbl_Rechnungen` AS `tbl_Rechnungen`, `wzdb`.`tbl_Adressen` AS `tbl_Adressen` WHERE `tbl_Rechnungen`.`LfdAdrNr` = `tbl_Adressen`.`LfdAdrNr` AND `tbl_Rechnungen`.`ReDatum` > ' BETWEEN CURDATE -365 DAY AND CURDATE ' ORDER BY `tbl_Rechnungen`.`Nettosumme` DESC


habs nun auf diese abfrage geändert , es kommt keine fehlermeldung , aber auch die falsche ausgabe , es wird halt alles angezeigt und nicht das aus dem bestimmten zeitraum

Re: Inhalte eines bestimmten alters

von DeeJay » Mo, 18.08.2008 15:37

ok muss mich korrigieren geht doch nicht :(

er gibt dann halt alles aus was an rechnungen in der db steht und nicht nur die aus dem letzten jahr

Re: Inhalte eines bestimmten alters

von DeeJay » Mo, 18.08.2008 15:24

SELECT `tbl_Rechnungen`.`Nettosumme` AS `Umsatz je Kunde`, `tbl_Rechnungen`.`LfdAdrNr`, `tbl_Adressen`.`Matchcode`
FROM `wzdb`.`tbl_Rechnungen` AS `tbl_Rechnungen`, `wzdb`.`tbl_Adressen` AS `tbl_Adressen`
WHERE `tbl_Rechnungen`.`LfdAdrNr` = `tbl_Adressen`.`LfdAdrNr` AND `tbl_Rechnungen`.`ReDatum` > DATE_SUB( CURRENT_DATE , INTERVAL 365 DAY )


wenn das so aussieht gehts nicht :/

sollte vllt dazu sagen das ich ne alte access db habe und die ganzen sachen jetzt neu in base zusammenklicke

EDIT:

SELECT `tbl_Rechnungen`.`Nettosumme` AS `Umsatz je Kunde`, `tbl_Rechnungen`.`LfdAdrNr`, `tbl_Adressen`.`Matchcode`
FROM `wzdb`.`tbl_Rechnungen` AS `tbl_Rechnungen`, `wzdb`.`tbl_Adressen` AS `tbl_Adressen`
WHERE `tbl_Rechnungen`.`LfdAdrNr` = `tbl_Adressen`.`LfdAdrNr` AND `tbl_Rechnungen`.`ReDatum` > ' DATE_SUB( CURRENT_DATE , INTERVAL 365 DAY )'

mit ' ' gehts :)

Re: Inhalte eines bestimmten alters

von komma4 » Mo, 18.08.2008 15:17

Warum sagt Dir die Doku nichts?

MySQL Dokumentation

DATE_SUB(date,INTERVAL expr unit)


WHERE rechnung.datum > DATE_SUB( CURRENT_DATE , INTERVAL 365 DAY )

[gelöst]Inhalte eines bestimmten alters

von DeeJay » Mo, 18.08.2008 14:45

Access Kriterium: Zwischen Datum()-365 Und Datum()

ergibt bei mir alle rechnungen aus den letzten 365 Tagen

ich hab nun schon mit CURDATE() DATE() , NOW() TODAY() und SUBDATE() versucht , aber stets fehler in der Syntax.
Base ist aber leider stets sparsam in den Fehlermeldungen und somit ist mir auch nicht begreiflich wo was zu ändern wäre.
MySQL Doku sagt aber leider auch nicht viel und alle Beispiele verlaufen auch im Sand

Nach oben