$num_w = "40";
$query = mysql_query("SELECT a.`id`, a.`title`, a.`date`,
SUBSTRING_INDEX(a.`text`,' '," . $num_w . ") AS `text`,
a.`time`, a.`view`, a.`hide`,
COUNT(b.`id_mail`) AS `id_mail_comment`
FROM `you_mail` a
LEFT JOIN `comment` b
ON a.`id` = b.`id_mail`
GROUP BY a.`id`
WHERE a.`hide`= 'show'
ORDER BY a.`id` DESC
LIMIT 5
") or die ("Ошибка -". mysql_error());
Все бы ничего, но вот только вот эта строчка
WHERE a.`hide`= 'show'все сбивает, если ее убрать, то все работает, но мне необходимо это условие. Подскажите, как тут быть? Спасибо.
Спустя 6 минут, 21 секунда (22.03.2011 - 19:00) Snus написал(а):
Попробуй так, а то вероятно ты мог с пробелами занести данные.
WHERE a.`hide` LIKE '%show%'
Спустя 1 минута, 44 секунды (22.03.2011 - 19:01) m4a1fox написал(а):
Snus
Не... пробелы ни как не получится. тут поле enum ('hide', 'show').
Не... пробелы ни как не получится. тут поле enum ('hide', 'show').
Спустя 1 минута, 23 секунды (22.03.2011 - 19:03) m4a1fox написал(а):
Snus
Неа, не проконало. Ошибка однако. Если интересно вот собственно сама ошибка
Вот такие пироги!
Неа, не проконало. Ошибка однако. Если интересно вот собственно сама ошибка
Ошибка -You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to
use near 'WHERE a.`hide` LIKE '%show%' ORDER BY a.`id` DESC '
at line 9
Вот такие пироги!
Спустя 14 минут, 42 секунды (22.03.2011 - 19:18) tomash написал(а):
GROUP BY после WHERE
Спустя 8 минут, 55 секунд (22.03.2011 - 19:26) m4a1fox написал(а):
tomash
Ха, сработало. Спасибо. Так же буру на заметку.
Ха, сработало. Спасибо. Так же буру на заметку.
Спустя 2 минуты, 54 секунды (22.03.2011 - 19:29) m4a1fox написал(а):
tomash
Можно вдогонку еще вопрос. А из скольки таблиц можно вынимать данные, есть ли ограничения. Просто я в этот запрос хочу добавить еще 2 таблицы. Как думаете, реально ли?
Можно вдогонку еще вопрос. А из скольки таблиц можно вынимать данные, есть ли ограничения. Просто я в этот запрос хочу добавить еще 2 таблицы. Как думаете, реально ли?
Спустя 6 минут, 50 секунд (22.03.2011 - 19:36) Invis1ble написал(а):
реально
Спустя 26 секунд (22.03.2011 - 19:37) tomash написал(а):
Честно говоря не знаю есть ли ограничения на количество JOIN в запросе, но этим не стоит злоупотреблять, а плюс еще две таблицы, конечно, реально)
Спустя 2 минуты, 19 секунд (22.03.2011 - 19:39) m4a1fox написал(а):
tomash
Ага. Ясно. Буду эксперементировать. Но лучше объедененный запрос, чем еще 3 запроса после while первого?
Ага. Ясно. Буду эксперементировать. Но лучше объедененный запрос, чем еще 3 запроса после while первого?
Спустя 2 минуты, 42 секунды (22.03.2011 - 19:42) Invis1ble написал(а):
Я тоже не в курсе, насчет ограничений (думаю, они конечно же есть), но в реальной ситуации ты врядли превысишь лимит. Я видел запросы по 100 строк (JOIN'ы не считал, но по-моему их там не меньше пары десятков было) и они работают
Спустя 55 секунд (22.03.2011 - 19:43) tomash написал(а):
В цикле тоже лучше запросов избегать. Почитайте про оператор IN (SQL)
Спустя 25 секунд (22.03.2011 - 19:43) m4a1fox написал(а):
И еще вопрос. (простите за наглость). LEFT JOIN только один раз прописывается, а потом через запятую перечисляются таблицы, или каждое новое обращение к БД это новый LEFT JOIN? Просто никогда не делал сложных запросов...
Спустя 8 секунд (22.03.2011 - 19:43) Invis1ble написал(а):
Цитата |
Но лучше объедененный запрос, чем еще 3 запроса после while первого? |
Звисит от кокретного случая, но при прочих равных - лучше, т.к. мускул работает на более низком уровне, следовательно скорость выше, чем если чать логики реализовывать средствами пыха
Спустя 57 секунд (22.03.2011 - 19:44) m4a1fox написал(а):
tomash
Понял. Сейчас почитаю:) У меня и книжка под рукой есть Анатолия Мотева.
Понял. Сейчас почитаю:) У меня и книжка под рукой есть Анатолия Мотева.
Спустя 3 минуты, 2 секунды (22.03.2011 - 19:47) m4a1fox написал(а):
Знаете, я только что реально оценил ситуацию, и понял, что лучше оставлю 2 запроса после первого while. Ну, это моя оценка, если не сложно может глянете код...
Просто даже не представляю, как это вписать в один запрос :(
$query = mysql_query("SELECT a.`id`, a.`title`, a.`date`,
SUBSTRING_INDEX(a.`text`,' '," . $num_w . ") AS `text`,
a.`time`, a.`view`, a.`hide`,
COUNT(b.`id_mail`) AS `id_mail_comment`
FROM `you_mail` a
LEFT JOIN `comment` b
ON a.`id` = b.`id_mail`
WHERE a.`hide` = 'show'
GROUP BY a.`id`
ORDER BY a.`id` DESC
LIMIT $start, $num
") or die ("Ошибка -". mysql_error());
while($ind=mysql_fetch_assoc($query))
{
$a = '/page_view_you_mail.php?view='.(int)$ind['id'].'';
$result_vote_up = mysql_query("SELECT COUNT(*) FROM `vote`
WHERE `link` = '".$a."' AND `vote_up` = 1
") or die ("Ошибка -".mysql_error());
$query_vote_up = mysql_result($result_vote_up, 0);
$result_vote_down = mysql_query("SELECT COUNT(*) FROM `vote`
WHERE `link` = '".$a."' AND `vote_down` = 1
") or die ("Ошибка -".mysql_error());
$query_vote_down = mysql_result($result_vote_down, 0);
Просто даже не представляю, как это вписать в один запрос :(
Спустя 2 минуты, 3 секунды (22.03.2011 - 19:49) tomash написал(а):
LEFT JOIN каждый раз пишите новый, а то недолго и запутаться
Спустя 2 минуты, 42 секунды (22.03.2011 - 19:52) m4a1fox написал(а):
tomash
Так дело в том, как условие просчитать...
Так дело в том, как условие просчитать...
Спустя 15 секунд (22.03.2011 - 19:52) tomash написал(а):
ужос))) я бы посоветовал изменить структуру БД, что бы избежать таких запросов.
Спустя 2 минуты, 55 секунд (22.03.2011 - 19:55) m4a1fox написал(а):
tomash
Ну почему. По сути, есть табл. с голосование. Строки в ней - id, ip, vote_up, vote_down, link. А потом вытаскивать по id статьи. Где id = link.
Ну почему. По сути, есть табл. с голосование. Строки в ней - id, ip, vote_up, vote_down, link. А потом вытаскивать по id статьи. Где id = link.
Спустя 6 минут, 42 секунды (22.03.2011 - 20:02) m4a1fox написал(а):
Ну все же не реально. Не получится определить $a.
Спустя 3 минуты, 44 секунды (22.03.2011 - 20:05) m4a1fox написал(а):
Разве что, можно в таблицу с заметками, добавить еще 2 поля. vote_up и vote_down. И при голосовании, заносить данные и в табл. vote, и в табл. data. В табл. data на каждое нажатие, делать +1 в тот или иной столбец. А проверять голосовавших уже по табл. vote с ip и link.
Спустя 3 минуты, 38 секунд (22.03.2011 - 20:09) tomash написал(а):
а можно посмотреть структуру? Чуть позже зайду посоветую может чего)
Спустя 1 минута, 43 секунды (22.03.2011 - 20:11) m4a1fox написал(а):
tomash
Я бы с удовольствием показал.... Но я на linux'е. И поставил чистые php5+mysql+apache2. Так что наверно ни как...
Я бы с удовольствием показал.... Но я на linux'е. И поставил чистые php5+mysql+apache2. Так что наверно ни как...
Спустя 1 минута, 45 секунд (22.03.2011 - 20:13) m4a1fox написал(а):
Сейчас скину:)
Спустя 30 секунд (22.03.2011 - 20:13) m4a1fox написал(а):
Вот скрин.
Спустя 1 минута, 21 секунда (22.03.2011 - 20:14) m4a1fox написал(а):
А вот это структура таблицы vote
Спустя 45 минут, 54 секунды (22.03.2011 - 21:00) Invis1ble написал(а):
m4a1fox
sudo mysqldump -uroot -proot database > /home/user/backup.sql
Спустя 19 секунд (22.03.2011 - 21:01) m4a1fox написал(а):
Всем спасибо за подсказки. Сделал путем добавления еще 2 полей, и обновления в них результата путем +1 если есть голосование.... Еще раз всем спасибо.
Спустя 37 секунд (22.03.2011 - 21:01) m4a1fox написал(а):
Invis1ble
А?
А?
Спустя 1 минута, 25 секунд (22.03.2011 - 21:03) Invis1ble написал(а):
m4a1fox
я тебе показал как дамп делается, дабы показать структуру БД
я тебе показал как дамп делается, дабы показать структуру БД
Спустя 24 минуты, 50 секунд (22.03.2011 - 21:27) m4a1fox написал(а):
Invis1ble
А. Ну я так и понял... Но уже справился. Спасибо. Пока что вопросов нет... но они появятся:)
А. Ну я так и понял... Но уже справился. Спасибо. Пока что вопросов нет... но они появятся:)