Anton63
27.08.2009 - 23:51
Искал в гугле... искал на форумах... читал документацию... И ничего не нашол...
Ближе к делу... Вот запрос из двух таблиц:
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 |
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...
Спустя 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 написал(а):
Спустя 11 минут, 9 секунд (28.08.2009 - 00:21) Anton63 написал(а):
Невыдержал... сделал отдельно выборку из каждой таблици и потом всё это суммировал...

Эффективно, но зато не так красиво...
Спустя 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 написал(а):
Спустя 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.