К примеру человек заходит на сайт заполняет форму для объявления Слева находится доска объявлений: ТУФЛИ (0) ПЛАТЬЯ (0) и т.д. вопрос как подсчитать количество туфлей или платьев в таблице (посчитать знаю как, проблема в переменной)? таблица 1: в ней два поля id и categor (туфли, платья и т.д) вывожу их циклом, все прекрасно и по нажатию на любую категорию в цикле выводит что надо таблица 2: в ней находится объявления name, text, prise, phone, categor выборка ("SELECT name, text, prise, phone, categor FROM table2 WHERE categor='$categor'") - где $categor из первой таблицы Не могу понять как сделать выборку для первой таблицы ("SELECT * FROM table WHERE id='$id'") Как узнать $id? Или как лучше сделать выборку?
Попробуйте вот тут почитать http://www.mysql.ru/docs/gruber/mg06.html, если смогу, напишу подробнее потом.
Вариант который предложил fessnecro не подошел??? А можно по подробней что требуется, как я понял в первой таблице в поле categor названия категорий.... Сделайте связь между таблицами по ID т.е. в таблице 2 categor ссылается на ID из первой таблице, обычно так делают. Напишите понятно какую выборку вы хотите, что бы посчитать количество туфлей используйте ("SELECT count(*) FROM table WHERE id='$id'")
опишу проблему: захожу на сайт есть доска объявлений пользователей ТУФЛИ (12) АКСЕССУАРРЫ (5) и т.д эту доску вывожу циклом $db = mysql_connect("localhost", "php", "12345"); mysql_select_db("test", $db); $result = mysql_query("SELECT id, categor FROM table1", $db); $myrow = mysql_fetch_array($result); do{ printf(" <table> <tr> <td><a href='блабла.php?id=%s'>%s</a></td><td>(0)</td> </tr> </table>", $myrow["id"], $myrow["categor"]) } while($myrow = mysql_fetch_array($result)); Вопрос как подсчитать количество туфлей или аксессуаров ( <td>(0)</td> и как вставить сюда ) во второй таблице (table2) вот некоторые поля name, gorod, adress, phone, categor
Можно такой SQl SELECT table1.id, table1.categor, count(table2.categor) FROM table1, table2 WHERE table1.id = table2.categor GROUP BY table2.categor Забыл что у вас table2.categor равняется table1.categor Исправте на SELECT table1.id, table1.categor, count(table2.categor) FROM table1, table2 WHERE table1.categor = table2.categor GROUP BY table2.categor
сейчас попробую =) Добавлено спустя 52 минуты 4 секунды: "SELECT table1.categor, count(table2.categor) FROM table1, table2 WHERE table1.categor = table2.categor GROUP BY table2.categor" выводит почему то данные из первой таблицы как будто там "SELECT * FROM table1" Решила поменять местами "SELECT table2.categor, count(table1.categor) FROM table2, table1 WHERE table2.categor = table1.categor GROUP BY table2.categor" и так "SELECT table2.categor, count(table1.categor) FROM table2, table1 WHERE table2.categor = table1.categor GROUP BY table1.categor" и так "SELECT table2.categor, count(table1.categor) FROM table1, table2 WHERE table2.categor = table1.categor GROUP BY table2.categor" выдает mysql_fetch_array(): supplied argument is not a valid MySQL result resource Что еще можно исправить?
в принципе первый вариант работает но почему выдает первую таблицу а не вторую не понятно сто раз перепроверила mysql_error(): supplied argument is not a valid MySQL-Link resource in Z:\home\localhost\ мне нужно как тут на форуме категория и справа количество тем (но вот как сделать запрос?)
Так уточнение в таблице table1 в поле categor названия категорий ТУФЛИ и т.д. В таблице table2 товары, цена и в categor названия категории. Если так то sql выведет название категорий из таблицы table1 и количество товаров по каждой категории из таблицы table2, на счет ошибки проверте подключение к базе
попробую проверить =) Добавлено спустя 12 минут 38 секунд: подключение к базе работает! весь SQL написала как вы сказали "SELECT table1.categor, count(table2.categor1) FROM table1, table2 WHERE table1.categor = table2.categor1 GROUP BY table2.categor1", но echo $myrow["categor"]; выдает туфли и т.д все ок echo $myrow["categor1"]; выдает пустоту. Непонятно синтаксис в порядке. Может запрос как то по другому надо сделать?
Мда а я вот думаю в чем же проблема categor1 нет такого поля есть поле count(table2.categor1) но так писать не удобно исправте на SELECT table1.categor, count(table2.categor1) AS total FROM table1, table2 WHERE table1.categor = table2.categor1 GROUP BY table2.categor1 вместо total можно написать что тебе удобней и обращайся $myrow["total"]
Алилуя, вроде все работает =) огромное спасибо но такая маленькая пролема в доске выводятся категории в которых есть объявления а если в категории объявлений нет то не выводит. Что делать?
Ну сидеть целый день на форуме не могу Попробуй этот sql Код (Text): SELECT table1.id, table1.categor, count(table2.categor) AS total FROM table1 LEFT JOIN table2 USING(categor) GROUP BY table2.categor
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost mysql_error(): supplied argument is not a valid MySQL-Link resource in Z:\home\localhost Увы не получилось =( , может еще варианты?
Не перестаю удивляться откуда ты берешь все эти ошибки... SQL я проверял он работает правильно если нет товаров в категории то в total будет 0. Если структура таблиц не менялась ошибка наверно потому что не правильно подставляешь, в прошлый раз то же была такая ошибка но потом как я понял ты ее исправила и все заработало. Может повторишь то же самое
Ок, шас проверю =) но вроде точно проверяла Добавлено спустя 6 минут 1 секунду: Честно все проверила но нет, может настройки денвера не те? Добавлено спустя 2 минуты 41 секунду: в статье кое что нашла шас проверю =) Добавлено спустя 8 минут 17 секунд: SELECT table1.id, table1.categor, count(table2.categor1) AS total FROM table1 LEFT JOIN table2 ON table1.categor = table2.categor1 GROUP BY table2.categor1 просто у меня были categor и categor1, но еще одна проблема в цикле выводятся все категории в которых есть объявления и только одна категория без объявлений а их больше =(. Что теперь?
Мда пардон за sql, написал по быстрому тот запрос, не добавил там дополнительное поле исправленная версия тут Код (Text): SELECT table1.id, table1.categor, count(table2.categor) AS total FROM table1 LEFT JOIN table2 USING(categor) GROUP BY table2.categor, table1.categor
может вы как то пропустили =) у меня table1.categor и table2.categor1 SELECT table1.id, table1.categor, count(table2.categor1) AS total FROM table1 LEFT JOIN table2 USING(categor) GROUP BY table2.categor, table1.categor тут по логике ошибка так и есть прочитала статью и сделала вот так SELECT table1.id, table1.categor, count(table2.categor1) AS total FROM table1 LEFT JOIN table2 ON table1.categor = table2.categor1 GROUP BY table2.categor, table1.categor И все заработало =)))))))))))))))) Ура, а вам большое спасибо за то что вы есть!