Эта тема на forum.dklab.ru


Киевлянин: php+MySQL (Больше MySQL)
Не могу составить скул запрос типа:
$sql = "SELECT country, SUM(one) AS sum FROM (SELECT country, SUM(one) AS sum, ip FROM stat WHERE date LIKE '$date%' GROUP BY ip) GROUP BY country";

Нужно из таблицы статистики вывести сколько человек (хостов) из каких стран заходило на сайт.
Запрос SELECT country, SUM(one) AS sum, ip FROM stat WHERE date LIKE '2005-04-27%' GROUP BY ip срабатывает, возвращает правильно, но возвращает хиты.

Запрос SELECT country, SUM(one) AS sum, ip FROM stat WHERE date LIKE '2005-04-27%' GROUP BY ip, country срабатывает, но возвращает список одинаковых стран с хостами.

Хотелось это сделать одним запросом. Потерял день...
Кто что посоветует?
Спасибо.
Дмитрий Котеров:
MySQL до версии 5.0 не поддерживает вложенные запросы, а 5.0 еще альфа - очень сырая.
Делайте через JOIN.
См. документацию MySQL.
Киевлянин:
И на том спасибо...
Maus:
MySQL до версии 5.0 не поддерживает вложенные запросы
Вы уверены?
В 4.1 частичная поддержка точно есть.
use mysql;
SELECT * FROM `user` WHERE user = ANY(SELECT user FROM db);
Киевлянин:
Предложили:
SELECT ip, country, SUM(one) AS sum, COUNT(DISTINCT ip) FROM stat WHERE date LIKE '$date%' GROUP BY country,

но результат тот же, что и :
SELECT country, SUM(one) AS sum FROM stat WHERE date LIKE '$date%' AND (country != '') GROUP BY country ORDER BY country DESC...

Жаль...
Igor R: php+MySQL
проблема с кодом <?php
require_once "mysql_connect.php";
require_once "mysql_qw.php";
define("test", "guestbook");
if (@$_REQUEST['doAdd']) {
$element = $_REQUEST['element'];
if (ini_get("magic_quotes_gpc"))
$element = array_map('stripslashes', $element);
mysql_qw(
'INSERT INTO "test" SET name=?, text=?',
$element['name'], $element['text']
) or die(mysql_error());
exit();
}
?>
<form action="" method="post">
<table>
<tr valign="top">
<td>Ваше имя:</td>
<td><input type="text" name="element[name]"></td>
</tr>
<tr valign="top">
<td>Текст сообщения:</td>
<td><textarea name="element[text]" cols="60" rows="5"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="doAdd" value="Добавить"></td>
</table>
</form>
<hr>
при выполнении в броузере выскакивает ошибка:
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 '"test" SET name='значение поля element', text='значение поля element'' at line 1.
Мануал читал. Ничего про это не написано.
Maus:
Igor R
Плохо читали. Имена БД/таблиц либо без экранирования либо в обратных одинарных кавычках: `
Igor R:
Спасибо Maus, заработало.

Эта тема на forum.dklab.ru