powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Сложный запрос.
13 сообщений из 13, страница 1 из 1
Сложный запрос.
    #38766440
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!
задача следующая, есть centOS есть корпоративный портал Битрикс 24, на портале есть чат, необходимо выводить все сообщения из чата по тому или иному пользователю, это я сделал таким образом, все работает :
...
Рейтинг: 0 / 0
Сложный запрос.
    #38766447
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!
задача следующая, есть centOS есть корпоративный портал Битрикс 24, на портале есть чат, необходимо выводить все сообщения из чата по тому или иному пользователю, это я сделал таким образом, все работает :
Код: html
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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
 <html>
	<head>
		<!-- Подключаем Bootstrap -->
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
		<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
		<!-- // Подключаем Bootstrap -->
	
	<title>История чата</title>

	</head>
	<body>
	
    <div class="container" style=" margin-left:380px; background: url(../dav.jpg); width:140px; height:140px;">
	</div>
	
	<?php

	// Соединяемся с БД
	mysql_connect("localhost", "root", "") or die (mysql_error ());

	// Выбираем БД
	mysql_select_db("sitemanager") or die(mysql_error());

	// SQL-запрос
	$strSQL = "[color=red]SELECT message, date_create ,last_name, name 
               FROM b_im_relation 
               LEFT JOIN b_im_message 
               ON b_im_relation.chat_id  = b_im_message.chat_id
               LEFT JOIN b_user 
               ON b_im_message.author_id  = b_user.id 
               WHERE b_im_relation.user_id = 76
               
               GROUP BY b_im_message.author_id, date_create
	      ORDER BY date_create DESC[/color]
               ";
	

	// Выполнить запрос (набор записей $rs содержит результат)
	$rs = mysql_query($strSQL);
	echo '<div class="container" >';
	echo '<table class="table table-hover">
	    


   <thead>
      <tr>
         <th>Дата</th>
         <th>Текст</th>
         <th>Пользователь</th>
      </tr>
   </thead>   
	 
	 
	 
	 
   ';
   
   
	echo '<tbody >';
	// Цикл по набору записей $rs
	while($row = mysql_fetch_array($rs)) {
         echo '<table width="1000" class="table table-hover">';
	     echo '<tr>';
		 echo '<td width="100">' . $row['date_create'] . '</td>';
	     echo '<td width="700">' . $row['message'] . '</td>';	      
	     echo '<td width="100">' . $row['last_name'] .  '&nbsp' . ++ $row['name'] . '</td>';
		 echo '</tr>';
	  
		
	  }
	echo '</tbody>';
	echo '</table>';
	echo '</div>';
	
	// Закрыть соединение с БД
	mysql_close();
	?>

	</body>
	</html>



Но выводится все огромной портянкой, если не делать группировку, необходимо, чтобы после группировки при нажатии на то или иное поле таблицы выводил переписку с тем или иным пользователем, а не одна большая каша.
...
Рейтинг: 0 / 0
Сложный запрос.
    #38766448
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, Ваш пост оборван на полуслове.
Во-вторых, категорически не рекомендую в Битриксе соваться на уровень БД до тех пор, пока Вы не знаете его очень хорошо. Пользуйтесь имеющимися API и/или готовым модулями, написанными знающими людьми.
...
Рейтинг: 0 / 0
Сложный запрос.
    #38766486
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы предложил:
1) GROUP BY b_im_message.author_id, date_create
ORDER BY date_create DESC
заменить на GROYP BY date_create DESC, b_im_message.author_id


2) Группировку/разгуппировку при нажатиях делать в браузере Javascript-ом.
...
Рейтинг: 0 / 0
Сложный запрос.
    #38767063
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если человек не смог из файла выделить скл запрос, врядли он его написал. и тем более битрикс, так что да...думаю не стоит лезть в базу битрикса. закончиться это всеравно ничем.

если на то пошло, джаваскриптом разрулить это дело и все...врядли у него там десятки тысяч елементов.

ЗЫ
хотя я на 100 000 точек кластеризацию на карте делал, и не просто точки обьеденяються, с каждой точкой там ещо целый масив данных - получаеться возможность агрегировать сумму по разным критериям - и ничё, быстро работает
...
Рейтинг: 0 / 0
Сложный запрос.
    #38767479
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

К вашему удивлению, запрос написан мною, но sql знаю плохо это тоже факт, все познания только с книжки Бена Форта 3-е издание.

miksoft, да надо попробовать скриптом разрулить это дело.
...
Рейтинг: 0 / 0
Сложный запрос.
    #38768162
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не выходит у меня скриптом реализовать, выводятся опять же группировка по пользователям, скрипт работает, но скрывает весь запрос соответственно а не разбивает по отдельным чатам, это я понимаю почему, не могу понять как разбить вывод на чаты по отдельности...
Код: html
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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
<html>
<head>
<script language="javascript">
//функция прячет определенную строку
function hideRow(control)
{
 control.parentElement.style.display=(control.parentElement.style.display==""?"none":"");
}
//функция показывает все строки
function showAllRow(control)
{
 for(var i=0;i<control.rows.length; i++)
 {
  control.rows[i].style.display = "";
 }
}
//функция по выбору действия
function tableHandler(table)
{
 var control = event.srcElement;
 switch(control.id)
 {
  case "showRowContol":
       showAllRow(table);
       break;
  case "hideRowContol":
       hideRow(control);
       break; 
 }
}
</script>
</head>
<body>
<table border="1" width="50%" onclick="tableHandler(this)">
<tr>
 <td width="100%" colspan="2" id="showRowContol" style="cursor:hand;color:#00ff00" title="Показать строки">
    Chat
 </td>
</tr>
<tr>
 <td width="100%">
 
 <?php

	// Соединяемся с БД
	mysql_connect("localhost", "root", "") or die (mysql_error ());

	// Выбираем БД
	mysql_select_db("sitemanager") or die(mysql_error());

	// SQL-запрос
	$strSQL = "SELECT message, date_create ,last_name, name 
               FROM b_im_relation 
               LEFT JOIN b_im_message 
               ON b_im_relation.chat_id  = b_im_message.chat_id
               LEFT JOIN b_user 
               ON b_im_message.author_id  = b_user.id 
               WHERE b_im_relation.user_id = 76
               GROUP BY b_im_message.author_id 
               		   
               ";
	
		// Выполнить запрос (набор записей $rs содержит результат)
	$rs = mysql_query($strSQL);
	echo '<div class="container" >';
	echo '<table class="table table-hover">';
   	echo '<tbody >';
	// Цикл по набору записей $rs
	while($row = mysql_fetch_array($rs)) {
         echo '<table width="1000" class="table table-hover">';
	     echo '<tr>';
		 echo '<td width="100">' . $row['date_create'] . '</td>';
	     echo '<td width="700">' . $row['message'] . '</td>';	      
	     echo '<td width="100">' . $row['last_name'] .  '&nbsp' . ++ $row['name'] . '</td>';
		 echo '</tr>';
		 }
	echo '</tbody>';
	echo '</table>';
	echo '</div>';
	
	// Закрыть соединение с БД
	mysql_close();
	?>
  
 </td>
 <td id="hideRowContol" style="width:100px;cursor:hand;color:#ff0000" title="Скрыть строку">
  Svernyt 
 </td>
</tr>
<tr>


</tr>
</table>
</body>
</html>
...
Рейтинг: 0 / 0
Сложный запрос.
    #38768171
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624,

Давайте решать проблему поэтапно. По части MySQL еще проблемы есть?
Если есть, то показывайте проблемные SQL-запросы, а не портянки из смесей всех языков.
Если нет, то передам топик в PHP. Когда в PHP все исправите, то можете попросить тамошнего модератора перенести топик уже в Javascript.
...
Рейтинг: 0 / 0
Сложный запрос.
    #38768206
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я видимо изначально не там создал запрос, так как по запросу не было проблем изначально, буду благодарен, если перенесете проблему в нужное русло.
Спасибо.

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
Сложный запрос.
    #38768225
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единственное, один вопрос по mysql запросам:
можно ли сделать запрос, чтобы вывод запроса по тем или иным id выводился в разные таблицы, а не в одну скопом.
Вот например по моему запросу я выбираю все чаты где присутствует пользователь под id =76, так вот могу ли я сделать запрос, который после вывода разбивал бы все чаты по отдельности, а не в одну кашу?
...
Рейтинг: 0 / 0
Сложный запрос.
    #38768234
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624могу ли я сделать запрос, который после вывода разбивал бы все чаты по отдельности, а не в одну кашу?Можете. В запросе сортируете по признаку, по которому можно сделать вывод тот_же_чат/другой_чат, например, по дате, если общение в разные дни считается разными чатами. А дальше - вопрос правильного отображения. Если в нужном поле сменился этот признак (дата), то предыдущий чат закончился, новый начался.
...
Рейтинг: 0 / 0
Сложный запрос.
    #38768739
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все дело в том, что id чатов добавляются каждый день и мне надо каждый новый чат опять же выводить отдельно(соответственно новые id чатов должны автоматом выводиться, без точного обращения к ним), сортировка мне только выводит результат по тому или иному признаку, столбцу, но опять же только все в одной портянке...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
      SELECT message, date_create ,last_name, name 
               FROM b_im_relation 
               LEFT JOIN b_im_message 
               ON b_im_relation.chat_id  = b_im_message.chat_id
               LEFT JOIN b_user 
               ON b_im_message.author_id  = b_user.id 
               WHERE b_im_relation.user_id = 76
               GROUP BY date_create DESC, b_im_message.author_id
...
Рейтинг: 0 / 0
Сложный запрос.
    #38768748
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в предыдущем посте код без сортировки соответственно... но смысла не меняет.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Сложный запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]