[gelöst]Inhalte eines bestimmten alters

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

[gelöst]Inhalte eines bestimmten alters

Beitrag von DeeJay »

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
Zuletzt geändert von DeeJay am Mo, 01.09.2008 13:21, insgesamt 1-mal geändert.
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von komma4 »

Warum sagt Dir die Doku nichts?

MySQL Dokumentation

DATE_SUB(date,INTERVAL expr unit)


WHERE rechnung.datum > DATE_SUB( CURRENT_DATE , INTERVAL 365 DAY )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von DeeJay »

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 :)
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von DeeJay »

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
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von DeeJay »

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
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von komma4 »

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)...
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von komma4 »

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  )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von DeeJay »

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) 856 mal betrachtet
Dateianhänge
db2.jpg
db2.jpg (122.18 KiB) 853 mal betrachtet
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von komma4 »

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 )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von DeeJay »

der 1. von beiden codes geht , aber es ergibt sich das selbe wie vorher , er zeigt alles
der 2. code sagt syntax fehler
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von komma4 »

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.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von DeeJay »

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
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von komma4 »

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?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Inhalte eines bestimmten alters

Beitrag von DeeJay »

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*
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Antworten