Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Zapytanie MySQL
krzesik
post 6.02.2019, 17:01:47
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


Witam
mam problem z napisanie zapytania. mam coś takiego:

tabela z userami:

id, nazwisko, imie,.......,uprawnienia

1 | Kowalski | Adam | ......... | 1,5,2
2 | Kowalski | Karol| ......... | 2,6,8,3


tabela z gatunkami książek
id_gatunku, nazwa

1 | Thriller
2 | Sensacja
3 | SF
4 | Poradnik
5 | Romans

jak napisać zapytanie aby kowalskiemu pokazało tylko jego gatunki?
Go to the top of the page
+Quote Post
nospor
post 6.02.2019, 17:08:38
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




znaczy chcesz powiedziec, ze kolumna UPRAWNIENIA trzyma liste gatunkow dostepnych dla usera? Gratuluje doboru nazwy pola wink.gif

Co do problemu:
stworz prawidlowa strukture danych. Nie zadna kolumna UPRAWNIENIA tylko dodatkowa tabela ktora bedzie miala dwie kolumny:
id_user
id_gatunku

Potem zapytania to bajka


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
krzesik
post 6.02.2019, 22:10:23
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


Tak masz rację, teraz to wygląda dużo lepiej

tabela z userami: user

id_usera, nazwisko, imie

1 | Kowalski | Adam
2 | Kowalski | Karol


tabela z gatunkami książek: gatunki
id_gatunku, nazwa

1 | Thriller
2 | Sensacja
3 | SF
4 | Poradnik
5 | Romans

tabela dostępu do gatunków: open

id_usera | id_gatunku

1 | 1
1 | 3
1 | 5
2 | 2
2 | 1


tabela z książkami: pozycje
id_pozycji | nazwa | id_gatunku

1 | Jaśko | 3
2 | Stefko | 4

ale z zapytaniem mam kłopot, próbowałem z JOIN-ami, ale.... nic z tego

SELECT * FROM pozycje
LEFT JOIN open ON pozycje.id_gatunku = open.id_gatunku
WHERE id_usera = '$_SESSION[id_czytelnika]' i tutaj pewnie warunek z open, ale jest ich tam kilka....
Go to the top of the page
+Quote Post
viking
post 7.02.2019, 08:30:58
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


  1. CREATE TABLE `user` (
  2. `id_usera` INT(11) NOT NULL AUTO_INCREMENT,
  3. `imie` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_520_ci',
  4. `nazwisko` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_520_ci',
  5. PRIMARY KEY (`id_usera`)
  6. )
  7. COLLATE='utf8_unicode_520_ci'
  8. ENGINE=InnoDB;
  9.  
  10. CREATE TABLE `gatunki` (
  11. `id_gatunku` INT(11) NOT NULL AUTO_INCREMENT,
  12. `nazwa` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_520_ci',
  13. PRIMARY KEY (`id_gatunku`)
  14. )
  15. COLLATE='utf8_unicode_520_ci'
  16. ENGINE=InnoDB;
  17.  
  18. CREATE TABLE `open` (
  19. `id_usera` INT(11) NOT NULL,
  20. `id_gatunku` INT(11) NOT NULL,
  21. PRIMARY KEY (`id_gatunku`, `id_usera`),
  22. INDEX `FK_open_user` (`id_usera`),
  23. CONSTRAINT `FK_open_gatunki` FOREIGN KEY (`id_gatunku`) REFERENCES `gatunki` (`id_gatunku`) ON UPDATE CASCADE,
  24. CONSTRAINT `FK_open_user` FOREIGN KEY (`id_usera`) REFERENCES `user` (`id_usera`) ON UPDATE CASCADE
  25. )
  26. COLLATE='utf8_unicode_520_ci'
  27. ENGINE=InnoDB;
  28.  
  29. CREATE TABLE `pozycje` (
  30. `id_pozycji` INT(11) NOT NULL AUTO_INCREMENT,
  31. `id_gatunku` INT(11) NOT NULL,
  32. `nazwa` VARCHAR(100) NOT NULL COLLATE 'utf8_unicode_520_ci',
  33. PRIMARY KEY (`id_pozycji`),
  34. INDEX `FK__gatunki` (`id_gatunku`),
  35. CONSTRAINT `FK__gatunki` FOREIGN KEY (`id_gatunku`) REFERENCES `gatunki` (`id_gatunku`) ON UPDATE CASCADE
  36. )
  37. COLLATE='utf8_unicode_520_ci'
  38. ENGINE=InnoDB;
  39.  
  40.  
  41. SELECT
  42. *
  43. FROM open o
  44. INNER JOIN user AS u USING(id_usera)
  45. INNER JOIN gatunki AS g USING(id_gatunku)
  46. INNER JOIN pozycje AS p USING(id_gatunku)
  47. WHERE u.id_usera = 1
  48. ORDER BY u.id_usera;


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 19:11