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_idint(11NOT NULL auto_increment,
  `
user_nicenamevarchar(64collate latin1_general_ci NOT NULL,
  `
user_colorvarchar(6collate latin1_general_ci NOT NULL,
  `
user_familynamevarchar(64collate latin1_general_ci NOT NULL,
  `
user_firstnamevarchar(64collate latin1_general_ci NOT NULL,
  `
user_titlevarchar(64collate latin1_general_ci NOT NULL,
  `
user_emailvarchar(128collate latin1_general_ci NOT NULL,
  `
user_registreddatetime NOT NULL,
  `
user_lastdatetime NOT NULL,
  `
user_loginvarchar(64collate latin1_general_ci NOT NULL,
  `
user_passvarchar(64collate latin1_general_ci NOT NULL,
  `
user_statusint(11NOT NULL,
  `
user_activation_keyvarchar(64collate latin1_general_ci NOT NULL,
  `
user_prototyp_idint(11NOT NULL,
  `
user_birthdaydate NOT NULL,
  `
user_planet_idint(11NOT NULL,
  
PRIMARY KEY  (`user_id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=;

CREATE TABLE `users_online` (
  `
idint(11NOT NULL auto_increment,
  `
user_idint(11NOT NULL,
  `
datedatetime NOT NULL,
  `
expiredatetime NOT NULL,
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=10 ;

CREATE TABLE `user_2_user` (
  `
idint(11NOT NULL auto_increment,
  `
user_idint(11NOT NULL,
  `
known_idint(11NOT NULL,
  `
relationshipvarchar(64collate latin1_general_ci NOT NULL,
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=;
?>



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_idint(11NOT NULL auto_increment,
  `
user_p_nicenamevarchar(64collate latin1_general_ci NOT NULL,
  `
user_p_colorvarchar(6collate latin1_general_ci NOT NULL,
  `
user_p_admin_levelint(11NOT NULL,
  `
user_p_datedatetime NOT NULL,
  `
user_p_updatetimestamp 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=;

INSERT INTO `user_prototypsVALUES (1'guestaccount''666666'0'0000-00-00 00:00:00''0000-00-00 00:00:00');

INSERT INTO `user_2_userVALUES (112'friendly');
INSERT INTO `user_2_userVALUES (223'enemy');

INSERT INTO `users_onlineVALUES (11'2007-05-05 16:02:05''2007-05-05 17:02:05');
INSERT INTO `users_onlineVALUES (22'2007-05-05 15:59:45''2007-05-05 16:59:45');
INSERT INTO `users_onlineVALUES (33'2007-05-05 15:57:45''2007-05-05 16:57:45');
INSERT INTO `users_onlineVALUES (44'2007-05-05 15:31:50''2007-05-05 16:31:50');
INSERT INTO `users_onlineVALUES (56'2007-05-05 15:13:11''2007-05-05 16:13:11');
INSERT INTO `users_onlineVALUES (65'2007-05-05 14:46:23''2007-05-05 15:46:23');
INSERT INTO `users_onlineVALUES (78'2007-05-05 15:48:25''2007-05-05 16:48:25');
INSERT INTO `users_onlineVALUES (87'2007-05-05 15:50:45''2007-05-05 16:50:45');
INSERT INTO `users_onlineVALUES (99'2007-05-05 15:48:29''2007-05-05 16:48:29');

INSERT INTO `usersVALUES (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 `usersVALUES (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


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.