Sofort mehr Traffic
Alt 13.05.2011, 11:13:35   #1 (permalink)
TDS
Webbie u. Progger
Benutzerbild von TDS

ID: 36770
Lose-Remote

TDS eine Nachricht über ICQ schicken TDS eine Nachricht über AIM schicken TDS eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 1.420
TDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter Mensch
Idee JOIN und ORDER über mehrere Tabellen

Hallo,

Ich habe ein Problem
Ich hab vor 3 Tabellen mittels JOIN zu verbinden und die Daten nach einem Datumsfeld zu sortieren.
Sub-Selects, Unions und Joins hab ich probiert - ohne Erfolg.
  • portal_gm_provide ist die Tabelle wo die globale wms_id hinterlegt ist.
  • portal_gm_log ist die Tabelle wo alle Logs (info, warning, error) reingeschrieben werden.
  • portal_gm_cron ist die Tabelle wo alle Cronjob Informationen hinterlegt sind (success or error).
Das Problem ist, das diese 3 Tabellen nicht die selbe Struktur geschweige denn das selbe Datumsfeld haben.
Kann ich denn überhaupt die Tabellen verbinden und sortieren so das jede Zeile die unnötigen Felder mit NULL wie bei einem LEFT/RIGHT Join füllt?

Bitte um Hilfe, Danke.

==================================================

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
 SELECT 
db_main
.wms_id AS id_wms,
db_log.messagedb_log.message_realdb_log.id_layer,
db_log.codedb_log.subcodedb_log.counterdb_log.time_firstdb_log.time_last,
db_cron.errordb_cron.errorno,
CASE
    
WHEN db_log.time_first IS NULL THEN db_cron.time 
    
ELSE NULL # db_log.time_first
END AS time
FROM portal_gm_provide 
AS db_main
RIGHT JOIN portal_gm_log 
AS db_log ON db_log.id_wms db_main.wms_id
RIGHT JOIN portal_gm_cron 
AS db_cron ON db_cron.id_wms db_main.wms_id
WHERE db_main
.user_id 1
ORDER BY time DESC
LIMIT 50 
==================================================

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
CREATE TABLE IF NOT EXISTS `portal_gm_provide` (
  `
idint(10unsigned NOT NULL AUTO_INCREMENT,
  `
user_idint(10unsigned NOT NULL DEFAULT '0',
  `
wms_idint(10unsigned NOT NULL DEFAULT '0',
  `
mail_notifyvarchar(100) DEFAULT NULL,
  `
mail_periodvarchar(100) DEFAULT NULL,
  `
timedatetime NOT NULL,
  `
time_crondatetime DEFAULT NULL,
  
PRIMARY KEY (`id`)
ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `portal_gm_log` (
  `
idint(10unsigned NOT NULL AUTO_INCREMENT,
  `
codeint(10unsigned NOT NULL DEFAULT '0',
  `
subcodeint(10unsigned DEFAULT '0',
  `
id_wmsint(10unsigned DEFAULT '0',
  `
id_layerint(10unsigned DEFAULT '0',
  `
messagemediumtext,
  `
message_realmediumtext,
  `
counterint(10unsigned NOT NULL DEFAULT '1',
  `
time_firstdatetime NOT NULL,
  `
time_lastdatetime DEFAULT NULL,
  
PRIMARY KEY (`id`),
  
KEY `id_wms` (`id_wms`),
  
KEY `id_layer` (`id_layer`)
ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `portal_gm_cron` (
  `
idbigint(20unsigned NOT NULL AUTO_INCREMENT,
  `
id_wmsint(10unsigned DEFAULT '0',
  `
errorvarchar(250) DEFAULT NULL,
  `
errornoint(10unsigned DEFAULT '0',
  `
flagint(10unsigned DEFAULT '0',
  `
timedatetime DEFAULT NULL,
  
PRIMARY KEY (`id`),
  
KEY `GM_ID` (`id_wms`),
  
KEY `DATUM` (`time`)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `portal_gm_provide` (`id`, `user_id`, `wms_id`, `mail_notify`, `mail_period`, `time`, `time_cron`) VALUES
    
(112'MOD_GEOMONITOR_PROVIDE_NOTIFY_STATE_WARNINGERROR''MOD_GEOMONITOR_PROVIDE_NOTIFY_PERIOD_3H''2011-04-21 10:35:36''2011-05-13 10:10:02'),
    (
211389'MOD_GEOMONITOR_PROVIDE_NOTIFY_STATE_WARNINGERRORIN''MOD_GEOMONITOR_PROVIDE_NOTIFY_PERIOD_IMMEDIATELY''2011-05-02 13:42:02''2011-05-13 11:34:01'),
    (
31415'MOD_GEOMONITOR_PROVIDE_NOTIFY_STATE_WARNINGERRORIN''MOD_GEOMONITOR_PROVIDE_NOTIFY_PERIOD_IMMEDIATELY''2011-05-02 13:42:02''2011-05-13 11:53:01');

INSERT INTO `portal_gm_log` (`id`, `code`, `subcode`, `id_wms`, `id_layer`, `message`, `message_real`, `counter`, `time_first`, `time_last`) VALUES (578819204155975'Valid SRS not found. Maybe no matching BoundingBox. Defaulting to EPSG:4326.'NULL90'2010-10-21 20:19:42''2010-10-27 13:42:52');
INSERT INTO `portal_gm_log` (`id`, `code`, `subcode`, `id_wms`, `id_layer`, `message`, `message_real`, `counter`, `time_first`, `time_last`) VALUES (3984819204155975'No valid Box for given SRS not found. Maybe no matching BoundingBox. Defaulting to EPSG:4326.'NULL483'2010-10-27 15:16:05''2010-12-02 08:18:19');
INSERT INTO `portal_gm_log` (`id`, `code`, `subcode`, `id_wms`, `id_layer`, `message`, `message_real`, `counter`, `time_first`, `time_last`) VALUES (7800435204150'www.umweltkarten.mv-regierung.de''every name server provided has failed: Success'3'2010-11-26 00:37:05''2010-11-29 21:34:27');
INSERT INTO `portal_gm_log` (`id`, `code`, `subcode`, `id_wms`, `id_layer`, `message`, `message_real`, `counter`, `time_first`, `time_last`) VALUES (14471122880138919219''NULL95'2011-05-02 14:24:01''2011-05-13 10:40:51');

INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2530349415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 00:00:27');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2531615415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 02:48:49');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2532882415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 05:36:05');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2534150415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 08:16:10');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2535418415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 11:04:05');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2536684415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 13:56:07');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2537951415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 16:44:20');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2539219415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 19:24:07');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2540489415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-06 21:56:04');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2541758415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 00:40:04');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2543027415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 03:24:01');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2544298415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 06:00:07');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2545566415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 08:48:05');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2546836415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 11:24:19');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2548106415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 14:00:09');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2549374415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 16:44:04');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2550643415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 19:24:01');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2551912415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-07 22:04:02');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2553181415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 00:44:04');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2554451415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 03:20:10');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2555719415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 06:04:05');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2556987415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 08:48:05');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2558256415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 11:28:06');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2559523415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 14:20:04');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2560791415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 17:08:04');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2562060415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 19:48:05');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2563328415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-08 22:28:02');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (2564598415'Error loading XML file. (Not Found, Code: 404)'2565'2011-05-09 01:04:39');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25312471389NULL05'2011-05-06 01:36:55');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25325141389NULL05'2011-05-06 04:24:25');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25337821389NULL05'2011-05-06 07:04:47');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25350501389NULL05'2011-05-06 09:48:36');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25363161389NULL05'2011-05-06 12:44:14');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25375821389NULL05'2011-05-06 15:36:12');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25388501389NULL05'2011-05-06 18:16:10');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25413891389NULL05'2011-05-06 23:28:48');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25426601389NULL05'2011-05-07 02:04:43');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25439291389NULL05'2011-05-07 04:48:38');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25451981389NULL05'2011-05-07 07:32:29');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25464681389NULL05'2011-05-07 10:12:55');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25477371389NULL05'2011-05-07 12:52:45');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25490061389NULL05'2011-05-07 15:32:34');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25502751389NULL05'2011-05-07 18:08:02');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25515451389NULL05'2011-05-07 20:48:32');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25528131389NULL05'2011-05-07 23:32:46');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25540831389NULL05'2011-05-08 02:08:56');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25553511389NULL05'2011-05-08 04:52:26');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25566211389NULL05'2011-05-08 07:28:48');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25578881389NULL05'2011-05-08 10:16:33');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25591561389NULL05'2011-05-08 13:00:21');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25604231389NULL05'2011-05-08 15:52:43');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25616921389NULL05'2011-05-08 18:36:16');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25629601389NULL05'2011-05-08 21:16:01');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25642291389NULL05'2011-05-08 23:56:02');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25654981389NULL05'2011-05-09 02:32:19');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25667681389NULL05'2011-05-09 05:08:43');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25680371389NULL05'2011-05-09 07:48:32');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25693041389NULL05'2011-05-09 10:40:46');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25705711389NULL05'2011-05-09 13:28:45');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25718381389NULL05'2011-05-09 16:16:36');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25731061389NULL05'2011-05-09 18:56:10');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25743731389NULL05'2011-05-09 21:40:38');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25756401389NULL05'2011-05-10 00:24:09');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25769061389NULL05'2011-05-10 03:16:30');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25781751389NULL05'2011-05-10 05:52:55');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25794431389NULL05'2011-05-10 08:32:28');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25807111389NULL05'2011-05-10 11:20:34');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25819791389NULL05'2011-05-10 14:00:46');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25832391389NULL05'2011-05-10 16:32:32');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25845111389NULL05'2011-05-10 19:04:14');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25857841389NULL05'2011-05-10 21:29:00');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25870561389NULL05'2011-05-10 23:56:21');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25896001389NULL05'2011-05-11 04:56:32');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25908731389NULL05'2011-05-11 07:20:50');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25921431389NULL05'2011-05-11 10:00:47');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25934141389NULL05'2011-05-11 12:36:19');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25946821389NULL05'2011-05-11 15:28:39');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25959531389NULL05'2011-05-11 18:04:23');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25972261389NULL05'2011-05-11 20:28:09');
INSERT INTO `portal_gm_cron` (`id`, `id_wms`, `error`, `errorno`, `flag`, `time`) VALUES (25984981389NULL05'2011-05-11 22:56:59'); 

Werde mein Ref und erhalte 500.000 Lose. PN an mich
TDS ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 13.05.2011, 11:51:12   #2 (permalink)
Erfahrener Benutzer

ID: 272843
Lose-Remote

Reg: 01.02.2007
Beiträge: 1.814
marac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehen
Standard

Habe ich das richtig verstanden, dass in der "portal_gm_provide" alle wms_ids liegen, und es für jede wms_id entweder einen Detail-Eintrag in der "portal_gm_log" oder in der "portal_gm_cron" gibt?

Dann sollte das prinzipiell doch fast so funktionieren, wie du geschrieben hast, nur dass der JOIN natürlich kein RIGHT JOIN sondern ein LEFT JOIN sein muss, denn die linke Tabelle (also die "portal_gm_provide") ist doch die Tabelle, die für jede Ergebniszeile etwas liefert...
Und nun gebe ich ab zur Werbung:
marac ist offline   Mit Zitat antworten
Alt 13.05.2011, 15:10:11   #3 (permalink)
TDS
Webbie u. Progger
Benutzerbild von TDS

ID: 36770
Lose-Remote

TDS eine Nachricht über ICQ schicken TDS eine Nachricht über AIM schicken TDS eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 1.420
TDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter Mensch
Standard

Ja, das habe ich ja alles probiert. Egal ob LEFT oder RIGHT. Es soll ja so funktionieren das auf der log- oder cron-Tabelle die Einträge so erkennbar sein sollen und woher sie kommen. Jedoch habe ich auch bei cron-Einträgen immer time_first und time_last welche ja nur in der log-Tabelle sind.

Bin ratlos

Werde mein Ref und erhalte 500.000 Lose. PN an mich
TDS ist offline Threadstarter   Mit Zitat antworten
Alt 13.05.2011, 19:41:49   #4 (permalink)
Erfahrener Benutzer

ID: 272843
Lose-Remote

Reg: 01.02.2007
Beiträge: 1.814
marac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehen
Standard

Ah, ich habe gerade erst gesehen, dass du für die Datenbank ja auch Daten gepostet hattest und nicht nur die Tabellen-Strukturen.
Meine Grundannahme aus dem letzten Post war also falsch, es kann also für jeden Eintrag in der portal_gm_provide auch mehrere Einträge in der portal_gm_log und/oder portal_gm_cron geben. Dann sieht das natürlich ganz anders aus...
Das lässt sich dann natürlich nicht mit Join lösen, da du die Daten von cron und log ja gar nicht gemeinsam in einer Zeile haben willst, folglich darfst du auch keinen Join machen, der diese beiden Tabellen enthält.
Dann brauchst du wohl zwei Abfragen, in denen du einmal provide mit log und einmal provide mit cron verknüpfst. Drum herum dann noch ein Union, also etwa so:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
(select h.h1
h.h2
h.h3
a.a1
a.a2
a.a3
null
null
null
a.a5 as time
from h
join a on a
.a4 h.h1)
union
(select h.h1
h.h2
h.h3
null
null
null
b.b1
b.b2
b.b3
b.b5 as time
from h
join b on b
.b4 h.h1)
order by time desc
limit 50 
Und nun gebe ich ab zur Werbung:
marac ist offline   Mit Zitat antworten
Alt 14.05.2011, 07:43:02   #5 (permalink)
TDS
Webbie u. Progger
Benutzerbild von TDS

ID: 36770
Lose-Remote

TDS eine Nachricht über ICQ schicken TDS eine Nachricht über AIM schicken TDS eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 1.420
TDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter Mensch
Standard

Okay, ich werd das mal so probieren. Gebe dir dann Bescheid.

Werde mein Ref und erhalte 500.000 Lose. PN an mich
TDS ist offline Threadstarter   Mit Zitat antworten
Alt 14.05.2011, 09:45:56   #6 (permalink)
TDS
Webbie u. Progger
Benutzerbild von TDS

ID: 36770
Lose-Remote

TDS eine Nachricht über ICQ schicken TDS eine Nachricht über AIM schicken TDS eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 1.420
TDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter Mensch
Standard

Zitat:
Zitat von TDS Beitrag anzeigen
Okay, ich werd das mal so probieren. Gebe dir dann Bescheid.
Ich glaub es funktioniert
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
(SELECT 
        db_main
.wms_id AS id_wms,
        
db_log.messagedb_log.message_realdb_log.id_layer,
        
db_log.codedb_log.subcodedb_log.counter,
        
db_log.time_firstdb_log.time_lastNULL as errorNULL as errorno,
        CASE 
WHEN db_log.time_last IS NULL THEN db_log.time_first ELSE db_log.time_last END AS TIME
    FROM portal_gm_provide 
AS db_main
    JOIN portal_gm_log 
AS db_log ON db_log.id_wms db_main.wms_id
    WHERE db_main
.user_id 1
)
UNION
(SELECT 
        db_main
.wms_id AS id_wms,
        
NULLNULLNULL,
        
NULLNULLNULL,
        
NULLNULL,    db_cron.errordb_cron.errorno,
        
db_cron.time AS TIME
    FROM portal_gm_provide 
AS db_main
    JOIN portal_gm_cron 
AS db_cron ON db_cron.id_wms db_main.wms_id
    WHERE db_main
.user_id 1
)
ORDER BY time DESC
LIMIT 500 
Werd das nochmal kurz richtig durchtesten. Danke schon mal dafür

Werde mein Ref und erhalte 500.000 Lose. PN an mich
TDS ist offline Threadstarter   Mit Zitat antworten
Alt 14.05.2011, 16:29:36   #7 (permalink)
Erfahrener Benutzer

ID: 272843
Lose-Remote

Reg: 01.02.2007
Beiträge: 1.814
marac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehen
Standard

Zitat:
Zitat von TDS
Hallo,

also mit einigen Statements geht's, mit einigen nicht. Das betrifft z.B. das Zeitfeld:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
 (SELECT SQL_CALC_FOUND_ROWS db_main.wms_id AS id_wms,
         
db_sub.message                              ,
         
db_sub.message_real                         ,
         
db_sub.id_layer                             ,
         
db_sub.code as code                         ,
         
db_sub.subcode                              ,
         
db_sub.counter                              ,
         
db_sub.time_first                           ,
         
db_sub.time_last                            ,
         
NULL as error                               ,
         
NULL as errorno                             ,
         
1    as type                                ,
         CASE
                 
WHEN db_sub.time_last IS NULL
                 THEN db_sub
.time_first
                 
ELSE db_sub.time_last
         END                
AS mytime
 FROM    portal_gm_provide  
AS db_main
         JOIN portal_gm_log 
AS db_sub
         ON      db_sub
.id_wms db_main.wms_id
 WHERE   1
 
AND     user_id 1
 
AND     id_wms  ="1389"
 
AND
         (
                 
UNIX_TIMESTAMP(mytime) > 1305367204
         
)
 )

UNION ALL
          
(SELECT db_main.wms_id AS id_wms,
                  
NULL                    ,
                  
NULL                    ,
                  
NULL                    ,
                  
NULL                    ,
                  
NULL                    ,
                  
NULL                    ,
                  
NULL                    ,
                  
NULL                    ,
                  
db_sub.error            ,
                  
db_sub.errorno      as code  ,
                  
2                   as type  ,
                  
db_sub.time         AS mytime
          FROM    portal_gm_provide   
AS db_main
                  JOIN portal_gm_cron 
AS db_sub
                  ON      db_sub
.id_wms db_main.wms_id
          WHERE   1
          
AND     user_id 1
          
AND     id_wms  ="1389"
          
AND
                  (
                          
UNIX_TIMESTAMP(mytime) > 1305367204
                  
)
          )
ORDER BY  mytime DESC LIMIT 100 
=> Unknown column 'mytime' in 'where clause'

Ich bin ratlos. Hab alles schon umbenannt, Tabellen in db_sub1 und db_sub2, HAVING probiert, ON clause probiert - alles kein Erfolg.

Hast du eine Lösung für so ein Problem?
Warum bleibst du mit der Frage denn nicht im Thread? Erstens könnte es ja sein, dass auch jemand anders darauf eine Antwort hat, zweitens könnte irgendwann auch mal jemand anders die selbe Frage haben, und wäre dann vielleicht froh, hier über die Suchfunktion etwas zu finden...

Aber zur Frage selbst:
Das Problem hat ja diesmal nichts mit dem Zusammenpappen der beiden Selects zu tun, sondern liegt darin, dass mysql offensichtlich dein definiertes Alias "mytime" in der where-Klausel noch nicht versteht. Ich nehme mal an, dass das Problem einfach die Verarbeitungsreihenfolge ist. mysql will wohl zunächst die Zeilen filtern, die verarbeitet werden sollen, anschließend wird der eigentliche select ausgeführt und danach das Ergebnis sortiert. Deshalb funktioniert die Verwendung der Aliase in der order-by-Klausel, aber nicht in der where-Klausel.
Du musst also versuchen, die Verwendung des Alias "mytime" in der where-Klausel zu entfernen. (Zum Beispiel indem du die case-when-Abfrage unten einfach wiederholst.)
Im Übrigen gibt es für "case a when null then b else a end" eine deutlich kürzere Schreibweise: "ifnull(a,b)"
Und nun gebe ich ab zur Werbung:
marac ist offline   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP/MySQL] [Erledigt] Abfrage über mehrere Tabellen mit LEFT Join Fabian17 Programmierung 0 21.04.2011 21:29:39
[MySQL] Häufigkeitsermittlung über mehrere Tabellen Xindo Programmierung 2 04.05.2010 14:26:35
[MySQL] Abfrage über mehrere Tabellen vereinfachen semmelkuh Programmierung 8 21.01.2010 20:32:30
[SQL] Where-Abfrage über mehrere Tabellen Papenburger Programmierung 10 02.11.2007 16:17:47
INNER JOIN mit 5 Tabellen feixe Programmierung 4 23.04.2007 18:15:05


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45:30 Uhr.