gerasim13
Новичок
Помогите вывести данные из 4х таблиц одним запросом.
Подскажите пожалуйста как правильно составить запрос. Есть 4 таблици из которых надо вытянуть данные и сформировать маленький список последних комментариев на сайте.
Вот такие таблици есть:
modx_jot_content - таблица содержит сами комментарии. нужные поля: id, content (текст комментария), uparent (id страницы которая содержит комментарий), createdby (id автора, если комментарий оставил гость то содержит 0 если не 0 то вся строка modx_jot_fields пустая и нужно брать пользователя из modx_user_attributes)
modx_jot_fields - имена гостей. тут такие поля: id (id комментария), content (содержит имя автора или email), label (указывает на то что хранится в content)
modx_site_content - тут нужна 1 ячейка, pagetitle. есть ячейка id которая совпадает с modx_jot_content.uparent.
modx_user_attributes - здесь хранятся данные о зарегистрированных пользователях (ячейка fullname - полное имя пользователя). id совпадает с modx_jot_content.createdby
Вот примерно так выглядит таблица modx_jot_fields:
| id | label | content |
---------------------------------
| 42 | name | Павел |
---------------------------------
| 42 | email | [email protected] |
---------------------------------
| 43 | name | Иван |
--------------------------------
| 43 | email | [email protected] |
--------------------------------
Вот что получилось у меня, но увы работает не правильно.
Возможно ли решить мою задачу одним запросом?
Подскажите пожалуйста как правильно составить запрос. Есть 4 таблици из которых надо вытянуть данные и сформировать маленький список последних комментариев на сайте.
Вот такие таблици есть:
modx_jot_content - таблица содержит сами комментарии. нужные поля: id, content (текст комментария), uparent (id страницы которая содержит комментарий), createdby (id автора, если комментарий оставил гость то содержит 0 если не 0 то вся строка modx_jot_fields пустая и нужно брать пользователя из modx_user_attributes)
modx_jot_fields - имена гостей. тут такие поля: id (id комментария), content (содержит имя автора или email), label (указывает на то что хранится в content)
modx_site_content - тут нужна 1 ячейка, pagetitle. есть ячейка id которая совпадает с modx_jot_content.uparent.
modx_user_attributes - здесь хранятся данные о зарегистрированных пользователях (ячейка fullname - полное имя пользователя). id совпадает с modx_jot_content.createdby
Вот примерно так выглядит таблица modx_jot_fields:
| id | label | content |
---------------------------------
| 42 | name | Павел |
---------------------------------
| 42 | email | [email protected] |
---------------------------------
| 43 | name | Иван |
--------------------------------
| 43 | email | [email protected] |
--------------------------------
Вот что получилось у меня, но увы работает не правильно.
PHP:
<?php
$guest="modx_jot_fields.label='name' AND modx_jot_fields.id=modx_jot_content.id";
$manager="modx_jot_content.createdby=modx_user_attributes.id";
$whereall ="modx_jot_content.published='1' AND modx_site_content.published='1' AND modx_site_content.id=modx_jot_content.uparent AND (IF (modx_jot_content.createdby=0,($guest),($manager)))";
$sql="SELECT modx_jot_content.content, modx_jot_content.id, modx_jot_content.uparent, modx_jot_content.createdon, modx_site_content.pagetitle,
IF modx_jot_content.createdby=0,modx_jot_fields.content,modx_user_attributes.fullname) AS authname
FROM modx_jot_content, modx_site_content, modx_jot_fields, modx_user_attributes
WHERE $whereall ORDER BY modx_jot_content.createdon DESC LIMIT 3";
$q=mysql_query($sql);
while($row = mysql_fetch_array($q)){
echo '<div class="comment"><div class="ballbtm">';
echo '<div class="content"><a href="'.$row[uparent].'" class="midtxt">'.$row[pagetitle].'</a>
<a href="'.$row[uparent].'#'.$row[id].'" class="darkgrey xsmltxt">'.$row[content].'</a></div>';
echo '</div>';
echo '<div class="aboutpost author">'.$row[authname].' </div>';
echo '</div>';
}
?>