Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql]Joine itp
Forum PHP.pl > Forum > Bazy danych > MySQL
bim2
Witam. mam problem.
  1. SELECT u.*,p.*,m.* FROM $tbl[users] u
  2. LEFT JOIN $tbl[prawa] p ON IF(p.prawa_typ=u, u.users_id, u.users_grupa)=p.prawa_dla_kogo
  3. LEFT JOIN $tbl[mody] m ON m.mody_id=p.prawa_do_czego
Mam takie coś i nie działa to. Jesli nie rozumiecie o co mi chodzi to chce pobrać dane wszytskich userów i przy tym pobrać nazwe ich praw a jeś;li prawa jest dla grupy(g) to ma pobrać także grupę (tzn. sprawdzić czy taowa istieje) To wszystko w jednym zapytaniu. HELP ME. Głowie się od godziny!!
DeyV
Chyba bez przykładu danych i struktury, oraz spodziewanych przezx Ciebie wyników, nic tu się nie da zrobić.
bim2
Dobrze zaraz dam w edicie strukture ale narazie serw siadł winksmiley.jpg. I myślałem czy nie zrobić osobnej tabeli dla praw grup i poprostu ja dołączyć winksmiley.jpg

EDIT: Dobra daje struktore winksmiley.jpg:
  1. CREATE TABLE `new_grupy` (
  2. `grupy_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `grupy_nazwa` varchar(60) NOT NULL DEFAULT '',
  4. `grupy_moder` int(11) NOT NULL DEFAULT '0',
  5. `grupy_opis` varchar(255) NOT NULL DEFAULT '',
  6. KEY `grupy_id` (`grupy_id`)
  7. ) TYPE=MyISAM AUTO_INCREMENT=2 ;
  8.  
  9.  
  10. CREATE TABLE `new_mody` (
  11. `mody_id` int(11) NOT NULL AUTO_INCREMENT,
  12. `mody_plik` varchar(255) NOT NULL DEFAULT '',
  13. `mody_opis` varchar(255) NOT NULL DEFAULT '',
  14. `mody_nazwa` varchar(50) NOT NULL DEFAULT '',
  15. `mody_version` varchar(10) NOT NULL DEFAULT '',
  16. `mody_opis_prawa` varchar(255) NOT NULL DEFAULT '',
  17. KEY `mody_id` (`mody_id`)
  18. ) TYPE=MyISAM AUTO_INCREMENT=31 ;
  19.  
  20.  
  21. CREATE TABLE `new_prawa` (
  22. `prawa_dla_kogo` int(11) NOT NULL DEFAULT '0',
  23. `prawa_do_czego` int(11) NOT NULL DEFAULT '0',
  24. `prawa_typ` char(1) NOT NULL DEFAULT ''
  25. ) TYPE=MyISAM;
  26.  
  27.  
  28. CREATE TABLE `new_users` (
  29. `users_imie` varchar(64) NOT NULL DEFAULT '',
  30. `users_id` int(8) NOT NULL AUTO_INCREMENT,
  31. `users_nick` varchar(16) NOT NULL DEFAULT '',
  32. `users_haslo` varchar(64) NOT NULL DEFAULT '',
  33. `users_mail` varchar(64) NOT NULL DEFAULT '',
  34. `users_www` varchar(128) NOT NULL DEFAULT '',
  35. `users_gg` varchar(64) NOT NULL DEFAULT '',
  36. `users_aqq` varchar(45) NOT NULL DEFAULT '',
  37. `users_tlen` varchar(45) NOT NULL DEFAULT '',
  38. `users_icq` varchar(45) NOT NULL DEFAULT '',
  39. `users_kraj` varchar(64) NOT NULL DEFAULT '',
  40. `users_miasto` varchar(65) NOT NULL DEFAULT '',
  41. `users_urodziny` varchar(65) NOT NULL DEFAULT '00-00-0000',
  42. `users_zainteresowania` varchar(255) NOT NULL DEFAULT '',
  43. `users_podpis` varchar(255) NOT NULL DEFAULT '',
  44. `users_data` int(11) NOT NULL DEFAULT '0',
  45. `users_stat` int(1) NOT NULL DEFAULT '1',
  46. `users_klucz` varchar(255) NOT NULL DEFAULT '',
  47. `users_avatar` varchar(255) NOT NULL DEFAULT '',
  48. `users_img_ok` char(3) NOT NULL DEFAULT 'no',
  49. `users_img_url` varchar(225) NOT NULL DEFAULT '',
  50. `users_logdata` int(11) NOT NULL DEFAULT '0',
  51. `users_ilelog` int(8) NOT NULL DEFAULT '0',
  52. `users_ip` varchar(255) NOT NULL DEFAULT '',
  53. `users_ip_log` varchar(255) NOT NULL DEFAULT '',
  54. `users_log` char(3) NOT NULL DEFAULT '',
  55. `users_punkty` varchar(255) NOT NULL DEFAULT '0:0:0:0:0:0:0:0',
  56. `users_ranga` int(3) NOT NULL DEFAULT '0',
  57. `users_grupa` int(11) NOT NULL DEFAULT '0',
  58. PRIMARY KEY (`users_id`),
  59. UNIQUE KEY `nick` (`users_nick`)
  60. ) TYPE=MyISAM AUTO_INCREMENT=15 ;
I chodzi aby sicagnac prawa w formie $prawka['jaki_modul']['id_usera']=TRUE lub FALSE;
Obecnie mam:
  1. <?php
  2. $zapytanie=$db->query("
  3. SELECT u.*,p.*,m.* FROM $tbl[users] u
  4. LEFT JOIN $tbl[prawa] p ON u.users_id=p.prawa_dla_kogo AND p.prawa_typ='u'
  5. LEFT JOIN $tbl[mody] m ON m.mody_id=p.prawa_do_czego
  6. ");
  7. while($r=$db->fetch_assoc($zapytanie)) {
  8.  $id=$r['users_id'];
  9.  
  10. $info[1][$id]=$r['users_nick']; //nick
  11. $info[3][$id]=$r['users_mail']; //email
  12. $info[5][$id]=$r['users_img_ok']; //czy masz obrazek nicka
  13. $info[6][$id]=$r['users_img_url']; //link obrazka nicka
  14. $info[7][$id]=ucfirst($r['users_imie']); 
  15. $info[8][$id]=$r['users_www'];
  16. $info[9][$id]=$r['users_kraj'];
  17. $info[10][$id]=$r['users_miasto'];
  18. $info[11][$id]=$r['users_urodziny'];
  19. $info[12][$id]=$r['users_gg'];
  20. $info[13][$id]=$r['users_aqq'];
  21. $info[14][$id]=$r['users_tlen'];
  22. $info[15][$id]=$r['users_icq'];
  23. $info[16][$id]=$r['users_zainteresowania'];
  24. $info[17][$id]=$r['users_podpis'];
  25. $info[18][$id]=$r['users_avatar'];
  26. $info[19][$id]=$r['grupy_id'];
  27. $info[20][$id]=$r['grupy_nazwa'];
  28. $prawka[$r['mody_plik']][$id]=TRUE;
  29.  
  30. $autor[$id]=$r['users_nick'];
  31. if($r['users_stat']==1) { $autor[$id]=$r['user_nick']; }
  32.  
  33. if($r['users_img_ok']=='yes' AND $r['users_img_url']!='') {
  34. $info[4][$id]='<img src="'.ADRES.'uploads/nick/'.$r['users_img_url'].'" border="0">'; 
  35. } else {
  36. $info[4][$id]=$r['users_nick'];
  37.  }
  38. if($r['users_avatar']!='') { 
  39. $info[2][$id]='<img src="'.ADRES.'uploads/ava/'.$r['users_avatar'].'" border="0" width="50" height="50">'; }
  40.  else { $info[2][$id]='brak ava'; }
  41.  
  42.  }
  43. ?>
I rposzę o pomoc i niekomentowanie ze robie jakoś brzydko czy źle bo sie az tak nie znam tongue.gif ale staram się pisac rozważie i wydajnie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2019 Invision Power Services, Inc.