Archivlink: javarea.de Forum > PHP, MySQL & CGI > aktive Benutzer finden und sortieren
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > aktive Benutzer finden und sortieren
Pages: [1]
| geschrieben von Martin am 13.05.2007 - 13:44 |
Ave zusammen,
ich versuche eine DB-Abfrage zu schreiben in der mehrere Tabellen verknüpft werden:
mysql:
| PHP-Quelltext | 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:
|
<?
CREATE TABLE `users` (
`user_id` int(11) NOT NULL auto_increment,
`user_nicename` varchar(64) collate latin1_general_ci NOT NULL,
`user_color` varchar(6) collate latin1_general_ci NOT NULL,
`user_familyname` varchar(64) collate latin1_general_ci NOT NULL,
`user_firstname` varchar(64) collate latin1_general_ci NOT NULL,
`user_title` varchar(64) collate latin1_general_ci NOT NULL,
`user_email` varchar(128) collate latin1_general_ci NOT NULL,
`user_registred` datetime NOT NULL,
`user_last` datetime NOT NULL,
`user_login` varchar(64) collate latin1_general_ci NOT NULL,
`user_pass` varchar(64) collate latin1_general_ci NOT NULL,
`user_status` int(11) NOT NULL,
`user_activation_key` varchar(64) collate latin1_general_ci NOT NULL,
`user_prototyp_id` int(11) NOT NULL,
`user_birthday` date NOT NULL,
`user_planet_id` int(11) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
CREATE TABLE `users_online` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`date` datetime NOT NULL,
`expire` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=10 ;
CREATE TABLE `user_2_user` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`known_id` int(11) NOT NULL,
`relationship` varchar(64) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
?>
|
query:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
<?
$link = $mysql->query("SELECT users.*,
user_prototyps.*
FROM users_online, users
LEFT JOIN user_prototyps
ON user_prototyps.user_p_id = users.user_prototyp_id
WHERE users.user_id = users_online.user_id
GROUP BY users.user_id
ORDER BY users.user_nicename") or die($mysql->error());
?>
|
Die Abfrage soll so gestaltet werden das alle Benutzer "user" die online "user_online" sind, sortiert nach deren Beziehungen "user_2_user" zum Benutzer ausgegeben werden. Das Query oben ist momentan ohne diese Beziehungskiste geschrieben. Wäre nett wenn einer eine Idee hat.
Mfg Martin |
| geschrieben von Klaush am 13.05.2007 - 22:53 |
Wie sieht denn die Tabelle user_prototyps aus und könntest du ein paar INSERTS aus jeder Tabelle liefern damit man den Zusammenhang besser erkennen kann?
|
| geschrieben von Martin am 15.05.2007 - 13:08 |
Ave Klaus,
mysql:
| PHP-Quelltext | 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:
|
<?
CREATE TABLE `user_prototyps` (
`user_p_id` int(11) NOT NULL auto_increment,
`user_p_nicename` varchar(64) collate latin1_general_ci NOT NULL,
`user_p_color` varchar(6) collate latin1_general_ci NOT NULL,
`user_p_admin_level` int(11) NOT NULL,
`user_p_date` datetime NOT NULL,
`user_p_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`user_p_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
INSERT INTO `user_prototyps` VALUES (1, 'guestaccount', '666666', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00');
INSERT INTO `user_2_user` VALUES (1, 1, 2, 'friendly');
INSERT INTO `user_2_user` VALUES (2, 2, 3, 'enemy');
INSERT INTO `users_online` VALUES (1, 1, '2007-05-05 16:02:05', '2007-05-05 17:02:05');
INSERT INTO `users_online` VALUES (2, 2, '2007-05-05 15:59:45', '2007-05-05 16:59:45');
INSERT INTO `users_online` VALUES (3, 3, '2007-05-05 15:57:45', '2007-05-05 16:57:45');
INSERT INTO `users_online` VALUES (4, 4, '2007-05-05 15:31:50', '2007-05-05 16:31:50');
INSERT INTO `users_online` VALUES (5, 6, '2007-05-05 15:13:11', '2007-05-05 16:13:11');
INSERT INTO `users_online` VALUES (6, 5, '2007-05-05 14:46:23', '2007-05-05 15:46:23');
INSERT INTO `users_online` VALUES (7, 8, '2007-05-05 15:48:25', '2007-05-05 16:48:25');
INSERT INTO `users_online` VALUES (8, 7, '2007-05-05 15:50:45', '2007-05-05 16:50:45');
INSERT INTO `users_online` VALUES (9, 9, '2007-05-05 15:48:29', '2007-05-05 16:48:29');
INSERT INTO `users` VALUES (1, 'guest', '888888', 'guest', 'guest', '', '', '2007-05-05 10:38:17', '2007-05-05 10:38:17', '', '', 0, '', 1, '0000-00-00', 0);
INSERT INTO `users` VALUES (2, 'Martin', '565645', 'Krüger', 'Martin', '', 'mckrpt@hotmail.com', '2007-05-05 17:52:14', '2007-05-13 09:29:27', 'martin', 'f6a136d8fe0790741d9330e98b2b51fd', 0, '6c99cd8918f3c762a12c05de1272d13a', 2, '2007-05-05', 5);
?>
|
Ich hoffe das hilft dir weiter.
Mfg Martin |
|