Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Do sprawdzenia: 4 tabele join 'INNER', LEFT', 'RIGHT', Czy dobrze to robiłem ?
WashingtonPLx
post 30.09.2018, 11:29:40
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 24.05.2011

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


Witam,
Chcę wyświetlić wszystkie posty z tematów przypisanych do działów które obserwuje dany użytkownik

messages_text - chcę pobrać 'message' -treść postu (mesid = pole id w tabeli messages)
messages - przechowuje wszystkie dodatkowe informacje postu (data utworzenia, autor itp.) z tej tabeli chcę pobrać userid (autor), subject (tytuł) i time (data). (thread = pole id z tabeli topics)
forum_subscription - lista "obserwowanych" działów. user_id id użytkownika, custom - id działu, like_it 1 obserwuje , like_it 0 nie obserwuje
topics - dane tematu. Mam tu pole custom1 - określa do jakiego działu jest przypisany temat. Ma brać pod uwagę tylko tematy gdzie hold jest równe 0


#__forum_subscription
https://image.ibb.co/e5NrJe/sub.png

#__forum_topics
https://image.ibb.co/fuN8ye/topics.png

#__forum_messages
https://image.ibb.co/mXuz4K/messages.png

#__forum_messages_text
https://image.ibb.co/nf0YWz/messages_text.png

Moje aktualne zapytanie w cms joomla

  1. $db = JFactory::getDbo();
  2. $query = $db->getQuery(true);
  3.  
  4. $query
  5. ->select(array('topic.id', 'mes.subject', 'mes.parent', 'mes.thread', 'mes.userid', 'mes.time', 'text.mesid', 'text.message'))
  6. ->from($db->quoteName('#__forum_messages_text', 'text'))
  7. ->join('INNER', $db->quoteName('#__forum_messages', 'mes') . ' ON (' . $db->quoteName('text.mesid') . ' = ' . $db->quoteName('mes.id') . ')')
  8. ->join('LEFT', $db->quoteName('#__forum_topics', 'topic') . ' ON (' . $db->quoteName('mes.thread') . ' = ' . $db->quoteName('topic.id') . ')')
  9. ->join('RIGHT', ($db->quoteName('#__forum_subscription', 'sub') . ' ON (' . $db->quoteName('sub.like_it') . ' = ' . $db->quote('1') ." AND ". $db->quoteName('topic.custom1') . ' = ' . $db->quoteName('sub.custom') ." AND ". $db->quoteName('topic.hold') .'=' . $db->quote("0") . ')'))
  10. ->where($db->quoteName('sub.user_id')." = ".$db->quote('151'))
  11. ->order('mes.time DESC');
  12.  
  13. $db->setQuery($query);
  14. $results = $db->loadObjectList();
  15.  
  16. foreach($results as $result) {
  17. echo ' ID tematu: <B>' . $result->id . '</B> Tytuł:<B>' . $result->subject . '</B> ID mesage<B>' . $result->thread . '</B> ID text<B>' . $result->mesid; ?> </B><br /> <?php
  18. }


Niby wszystko wyświetla ok, ale to moje pierwsze tego typu zapytanie, czy dobrze to zrobiłem? do duże zapytanie i nie chcę by później zbyt mocno obciążało serwer

Ten post edytował WashingtonPLx 30.09.2018, 11:43:50
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: 24.10.2019 - 01:00