[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Опять вывод из двух таблиц
Anton63
Искал в гугле... искал на форумах... читал документацию... И ничего не нашол...
Ближе к делу... Вот запрос из двух таблиц:
PHP
$row_com = mysql_query("SELECT * FROM ans_comments , art_comments WHERE ans_comments.login='$user' OR art_comments.login='$user'", $db);
@
$num_com = mysql_num_rows($row_com);

$user получаем так(не говорите о безопасности):
PHP
$user = $_GET[user];

Затем вывод:
PHP
echo 'Оставлено коментариев: '.$num_com.'<BR>';

Знаю, что результат должен быть 1, а она мне пишет 8... не пойму ничего...
В БД лежит одна запись в ans_comments...



Спустя 24 минуты, 9 секунд (27.08.2009 - 23:16) web-dev написал(а):
Так а если из субд запрос выполнить, сколько строк вернёт?

Спустя 25 минут, 54 секунды (27.08.2009 - 23:41) Anton63 написал(а):
Цитата (web-dev @ 27.08.2009 - 20:16)
Так а если из субд запрос выполнить, сколько строк вернёт?

Тогда выводит всё количество записей из таблици art_comments, там их как раз 8... wink.gif

Спустя 8 минут, 45 секунд (27.08.2009 - 23:50) web-dev написал(а):
SQL
SELECT * FROM ans_comments WHERE ans_comments.login='$user'

Спустя 5 минут, 53 секунды (27.08.2009 - 23:56) Anton63 написал(а):
Тогда поиск идёт по одной таблице, а мне надо по двум сразу... когда идёт совпадение либо в одной, либо в другой таблице... и выводилось общее их количество...

Спустя 13 минут, 49 секунд (28.08.2009 - 00:10) web-dev написал(а):
del

Спустя 11 минут, 9 секунд (28.08.2009 - 00:21) Anton63 написал(а):
Невыдержал... сделал отдельно выборку из каждой таблици и потом всё это суммировал... sad.gif Эффективно, но зато не так красиво...

Спустя 25 минут, 56 секунд (28.08.2009 - 00:47) web-dev написал(а):
SQL
SELECT * FROM ans_comments WHERE ans_comments.login='$user' UNION ALL SELECT * FROM art_comments WHERE art_comments.login='$user'

Спустя 6 часов, 49 минут, 24 секунды (28.08.2009 - 07:36) glock18 написал(а):
JOIN + GROUP BY и COUNT

Спустя 19 минут, 32 секунды (28.08.2009 - 07:56) Michael написал(а):
SQL
$row_com = mysql_query("SELECT * FROM ans_comments , art_comments WHERE ans_comments.login='$user' OR art_comments.login='$user'", $db);

Твой запрос вернет естественно 8 строк так как производится декартово произведение и строка с верным user из одной таблицы соединится с каждой строкой из другой таблицы(там где 8 строк).
Ответ web-dev верен.
Или можно попробовать так:
SQL
SELECT * FROM ans_comments,art_comments WHERE (ans_comments.login='user' OR art_comments.login='user') AND (ans_comments.login=art_comments.login)

А лучше как glock18 указал провести JOIN по полю login.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.