Hallo Leute,
ich bin eigentlich recht fit in MySQL, aber hier scheitere ich:
Gegeben sind 3 Tabellen: Ich brauche den Inhalt von Tabelle "events" komplett, in Tabelle "recurring" stehen Verweise zur ID von Tabelle "events", welche ich in Tabelle "bookings" brauche.
Die Tabellen sehen so aus:
Alles anzeigen
Ich benötige ein SELECT, bei dem NUR alle Datensätze von "events" ausgeben wird, aber nur, wenn das Beginn-Datum (events.begin) und das Buchungsschluss-Datum (events.booked) <= Jetzt ist. Das ist auch soweit kein Problem. das funktioniert mit:
Jetzt gibt es aber in "events" eine Spalte "nrbooked", welche aber durch die Software nicht gesetzt wird, keine Ahnung, warum.
Ich möchte jetzt jedem Datensatz von "events" die Summe der jeweiligen Buchungen aus "bookings" zufügen.
Und genau hier, scheitere ich. Ich weiss, dass ich mit SUM und GROUP BY arbeiten muss, aber ich habe keinen Schimmer, wie!
Ich habe auch schon mit LEFT JOIN und RIGHT JOIN experimentiert, kein Erfolg.
Die Abfrage:
liefert mir Datensätze aus bookings * events. Also das Produkt davon.
Ich hoffe, dass ich dashalbwegs verständlich ausgedrückt habe.
Hat jemand einen Tipp für mich, was ich falsch mache?
Danke und LG
Bernd
ich bin eigentlich recht fit in MySQL, aber hier scheitere ich:
Gegeben sind 3 Tabellen: Ich brauche den Inhalt von Tabelle "events" komplett, in Tabelle "recurring" stehen Verweise zur ID von Tabelle "events", welche ich in Tabelle "bookings" brauche.
Die Tabellen sehen so aus:
Quellcode
- CREATE TABLE `events` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `sid` int(11) NOT NULL DEFAULT '0',
- `semnum` varchar(100) NOT NULL DEFAULT '',
- `catid` int(11) NOT NULL DEFAULT '1',
- `title` varchar(500) NOT NULL DEFAULT '',
- `target` varchar(500) NOT NULL DEFAULT '',
- `shortdesc` mediumtext NOT NULL,
- `description` mediumtext NOT NULL,
- `place_id` int(11) NOT NULL DEFAULT '0',
- `place` mediumtext NOT NULL,
- `teacher` varchar(500) NOT NULL DEFAULT '',
- `fees` varchar(10) NOT NULL DEFAULT '0',
- `maxpupil` int(11) NOT NULL DEFAULT '0',
- `minpupil` int(6) NOT NULL DEFAULT '0',
- `bookedpupil` int(6) NOT NULL DEFAULT '0',
- `stopbooking` tinyint(1) NOT NULL DEFAULT '0',
- `cancelled` tinyint(1) NOT NULL DEFAULT '0',
- `begin` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `end` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `booked` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `showbegin` tinyint(1) NOT NULL DEFAULT '1',
- `showend` tinyint(1) NOT NULL DEFAULT '1',
- `showbooked` tinyint(1) NOT NULL DEFAULT '1',
- `checked_out` int(11) unsigned NOT NULL DEFAULT '0',
- `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `ordering` int(11) NOT NULL DEFAULT '0',
- `published` tinyint(1) NOT NULL DEFAULT '0',
- `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- `publishdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `publisher` int(11) NOT NULL DEFAULT '0',
- `access` int(11) unsigned NOT NULL DEFAULT '1',
- `hits` int(11) NOT NULL DEFAULT '0',
- `grade` tinyint(1) NOT NULL DEFAULT '0',
- `certificated` int(5) NOT NULL DEFAULT '0',
- `paid` int(11) NOT NULL DEFAULT '0',
- `gmaploc` varchar(255) NOT NULL DEFAULT '',
- `nrbooked` int(5) NOT NULL DEFAULT '1',
- `pattern` varchar(255) NOT NULL DEFAULT '',
- `zusatz1` text NOT NULL,
- `zusatz2` text NOT NULL,
- `zusatz3` text NOT NULL,
- `zusatz4` text NOT NULL,
- `zusatz5` text NOT NULL,
- `zusatz6` text NOT NULL,
- `zusatz7` text NOT NULL,
- `zusatz8` text NOT NULL,
- `zusatz9` text NOT NULL,
- `zusatz10` text NOT NULL,
- `zusatz11` text NOT NULL,
- `zusatz12` text NOT NULL,
- `zusatz13` text NOT NULL,
- `zusatz14` text NOT NULL,
- `zusatz15` text NOT NULL,
- `zusatz16` text NOT NULL,
- `zusatz17` text NOT NULL,
- `zusatz18` text NOT NULL,
- `zusatz19` text NOT NULL,
- `zusatz20` text NOT NULL,
- `zusatz1hint` text NOT NULL,
- `zusatz2hint` text NOT NULL,
- `zusatz3hint` text NOT NULL,
- `zusatz4hint` text NOT NULL,
- `zusatz5hint` text NOT NULL,
- `zusatz6hint` text NOT NULL,
- `zusatz7hint` text NOT NULL,
- `zusatz8hint` text NOT NULL,
- `zusatz9hint` text NOT NULL,
- `zusatz10hint` text NOT NULL,
- `zusatz11hint` text NOT NULL,
- `zusatz12hint` text NOT NULL,
- `zusatz13hint` text NOT NULL,
- `zusatz14hint` text NOT NULL,
- `zusatz15hint` text NOT NULL,
- `zusatz16hint` text NOT NULL,
- `zusatz17hint` text NOT NULL,
- `zusatz18hint` text NOT NULL,
- `zusatz19hint` text NOT NULL,
- `zusatz20hint` text NOT NULL,
- `zusatz1show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz2show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz3show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz4show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz5show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz6show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz7show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz8show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz9show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz10show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz11show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz12show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz13show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz14show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz15show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz16show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz17show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz18show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz19show` tinyint(1) NOT NULL DEFAULT '0',
- `zusatz20show` tinyint(1) NOT NULL DEFAULT '0',
- `image` varchar(255) NOT NULL DEFAULT '',
- `file1` varchar(100) NOT NULL DEFAULT '',
- `file2` varchar(100) NOT NULL DEFAULT '',
- `file3` varchar(100) NOT NULL DEFAULT '',
- `file4` varchar(100) NOT NULL DEFAULT '',
- `file5` varchar(100) NOT NULL DEFAULT '',
- `file1desc` varchar(255) NOT NULL DEFAULT '',
- `file2desc` varchar(255) NOT NULL DEFAULT '',
- `file3desc` varchar(255) NOT NULL DEFAULT '',
- `file4desc` varchar(255) NOT NULL DEFAULT '',
- `file5desc` varchar(255) NOT NULL DEFAULT '',
- `file1down` tinyint(1) NOT NULL DEFAULT '0',
- `file2down` tinyint(1) NOT NULL DEFAULT '0',
- `file3down` tinyint(1) NOT NULL DEFAULT '0',
- `file4down` tinyint(1) NOT NULL DEFAULT '0',
- `file5down` tinyint(1) NOT NULL DEFAULT '0',
- `file1code` mediumtext NOT NULL,
- `file2code` mediumtext NOT NULL,
- `file3code` mediumtext NOT NULL,
- `file4code` mediumtext NOT NULL,
- `file5code` mediumtext NOT NULL,
- `created_by` int(11) NOT NULL DEFAULT '0',
- `created_by_alias` varchar(255) NOT NULL DEFAULT '',
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `modified_by` int(11) NOT NULL DEFAULT '0',
- `group_id` int(11) NOT NULL DEFAULT '0',
- `webinar` tinyint(1) NOT NULL DEFAULT '0',
- `booking_mail` mediumtext NOT NULL,
- `certificate_code` mediumtext NOT NULL,
- `top_event` tinyint(1) NOT NULL DEFAULT '0',
- `hot_event` tinyint(1) NOT NULL DEFAULT '0',
- `tax_id` int(11) NOT NULL DEFAULT '0',
- `different_fees` tinyint(1) NOT NULL DEFAULT '0',
- `different_fees_override` mediumtext NOT NULL,
- `recurring` tinyint(1) NOT NULL DEFAULT '0',
- `recurring_count` int(11) NOT NULL DEFAULT '0',
- `recurring_type` varchar(20) NOT NULL DEFAULT 'daily',
- `recurring_week_day` varchar(20) NOT NULL DEFAULT '1',
- `recurring_month_week` varchar(30) NOT NULL DEFAULT 'week1',
- `recurring_until` date NOT NULL DEFAULT '0000-00-00',
- `recurring_created` tinyint(2) NOT NULL DEFAULT '0',
- `language` varchar(255) NOT NULL DEFAULT '*',
- `asset_id` int(10) NOT NULL DEFAULT '0',
- `status` tinyint(4) NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='Events';
- CREATE TABLE `bookings` (
- `id` int(12) NOT NULL AUTO_INCREMENT,
- `name` text NOT NULL,
- `email` text NOT NULL,
- `sid` int(11) NOT NULL DEFAULT '0',
- `semid` int(11) NOT NULL DEFAULT '1',
- `userid` int(11) NOT NULL DEFAULT '1',
- `certificated` tinyint(1) NOT NULL DEFAULT '0',
- `bookingdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- `grade` tinyint(1) NOT NULL DEFAULT '0',
- `mark` tinyint(2) NOT NULL DEFAULT '0',
- `comment` varchar(1000) NOT NULL DEFAULT '',
- `paid` tinyint(1) NOT NULL DEFAULT '0',
- `nrbooked` int(11) NOT NULL DEFAULT '1',
- `zusatz1` text NOT NULL,
- `zusatz2` text NOT NULL,
- `zusatz3` text NOT NULL,
- `zusatz4` text NOT NULL,
- `zusatz5` text NOT NULL,
- `zusatz6` text NOT NULL,
- `zusatz7` text NOT NULL,
- `zusatz8` text NOT NULL,
- `zusatz9` text NOT NULL,
- `zusatz10` text NOT NULL,
- `zusatz11` text NOT NULL,
- `zusatz12` text NOT NULL,
- `zusatz13` text NOT NULL,
- `zusatz14` text NOT NULL,
- `zusatz15` text NOT NULL,
- `zusatz16` text NOT NULL,
- `zusatz17` text NOT NULL,
- `zusatz18` text NOT NULL,
- `zusatz19` text NOT NULL,
- `zusatz20` text NOT NULL,
- `newfields` text,
- `uuid` varchar(255) DEFAULT '',
- `payment_method` varchar(255) DEFAULT 'cash',
- `payment_number` varchar(255) DEFAULT NULL,
- `payment_netto` float(11,2) DEFAULT '0.00',
- `payment_tax` float(11,2) DEFAULT '0.00',
- `payment_brutto` float(11,2) DEFAULT '0.00',
- `payment_plugin_data` text NOT NULL,
- `different_fees` varchar(1000) DEFAULT '',
- `coupon_code` varchar(255) DEFAULT NULL,
- `checked_in` tinyint(1) NOT NULL DEFAULT '0',
- `payment_status` varchar(255) NOT NULL DEFAULT 'P',
- `status` tinyint(4) NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='Bookings';
- CREATE TABLE `recurring` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `event_id` int(11) NOT NULL,
- `semnum` varchar(255) NOT NULL,
- `begin` datetime NOT NULL,
- `end` datetime NOT NULL,
- `booked` datetime NOT NULL,
- `hits` int(11) NOT NULL DEFAULT '0',
- `grade` tinyint(1) NOT NULL DEFAULT '0',
- `cancelled` tinyint(1) NOT NULL DEFAULT '0',
- `published` tinyint(1) NOT NULL DEFAULT '1',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='Recurring';
Ich benötige ein SELECT, bei dem NUR alle Datensätze von "events" ausgeben wird, aber nur, wenn das Beginn-Datum (events.begin) und das Buchungsschluss-Datum (events.booked) <= Jetzt ist. Das ist auch soweit kein Problem. das funktioniert mit:
Jetzt gibt es aber in "events" eine Spalte "nrbooked", welche aber durch die Software nicht gesetzt wird, keine Ahnung, warum.
Ich möchte jetzt jedem Datensatz von "events" die Summe der jeweiligen Buchungen aus "bookings" zufügen.
Und genau hier, scheitere ich. Ich weiss, dass ich mit SUM und GROUP BY arbeiten muss, aber ich habe keinen Schimmer, wie!
Ich habe auch schon mit LEFT JOIN und RIGHT JOIN experimentiert, kein Erfolg.
Die Abfrage:
liefert mir Datensätze aus bookings * events. Also das Produkt davon.
Ich hoffe, dass ich dashalbwegs verständlich ausgedrückt habe.
Hat jemand einen Tipp für mich, was ich falsch mache?
Danke und LG
Bernd
Ich bin gegen Signaturen!!!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von beage ()