Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объединение запросов для возможной сортировки 
:(
    Опции темы
letsgo
Дата 17.2.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.2.2009

Репутация: нет
Всего: нет



Добрый вечер.
Прошу помощи в решении следующей проблемы.

Есть две таблицы:

table1 (id,name)

table2 (id,idtable1,name)

Мне необходимо выбрать из таблицы table1 все строки и сосчитать сколько раз значение table1.id встречается в table2

Сейчас я делаю это с помощью двух запросов

Код

$result = mysql_query("SELECT * FROM `table1`");
while ($row = mysql_fetch_array($result)) :
$res1 = mysql_query("SELECT * FROM `table2` WHERE `idtable1` = '$row[0]'");
$all = mysql_num_rows($res1);
echo "$row[1] $all<BR>";
endwhile;


Понимаю, что вроде бы можно и в один запрос можно, но все руки не доходили, а сейчас потребовалось делать сортировку вывода, как раз, по значению $all.

В общем, прошу помощи...
Заранее всем спасибо.


Это сообщение отредактировал(а) letsgo - 17.2.2009, 22:08
PM MAIL   Вверх
Akina
Дата 17.2.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Код

select table1.id, count(table2.id)
from table1
left join table2
on table1.id=table2.idtable1



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 17.2.2009, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Код

SELECT table1.id, count(table2.idtable1)
FROM table1
LEFT JOIN table2
ON table2.idtable1 = table1.id
GROUP BY table1.id

PM MAIL   Вверх
letsgo
Дата 17.2.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.2.2009

Репутация: нет
Всего: нет



А как сортировать вывод результатов, либо по увеличению, либо по уменьшению count(table2.id))

Это сообщение отредактировал(а) letsgo - 17.2.2009, 22:57
PM MAIL   Вверх
Kbl4AH
Дата 17.2.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 1
Всего: 15



Код

order by 2 [desc]
 ?
PM MAIL ICQ   Вверх
Akina
Дата 17.2.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Добавить order by



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
letsgo
Дата 17.2.2009, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.2.2009

Репутация: нет
Всего: нет



Я так понимаю, что, если требуется сделать выборку еще из одной таблицы, то простым добавлением имени таблицы после FROM не отделаешься?
PM MAIL   Вверх
Kbl4AH
Дата 18.2.2009, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 1
Всего: 15



Цитата(letsgo @  17.2.2009,  23:59 Найти цитируемый пост)
Я так понимаю, что, если требуется сделать выборку еще из одной таблицы, то простым добавлением имени таблицы после FROM не отделаешься?

От ситуации зависит...
PM MAIL ICQ   Вверх
letsgo
Дата 21.2.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.2.2009

Репутация: нет
Всего: нет



Скажу честно, очень долго пытался составить запрос самостоятельно - не получается никак.
Думал из примера про две таблицы, из трех таблиц как-нибудь составлю самостоятельно :(

К сожалению, ошибался.
Если кому не сложно, буду несказанно рад помощи.

Итак, есть три таблицы:

- table1
- table2
- table3

Как и в первом посте из первых двух таблиц я выбираю значения, которые соответствуют заданным параметрам:
Код

SELECT * FROM `table1`,`users`
                        WHERE `table2`.`col1` = '$_GET[$x]'
                        AND `table2`.`col2` = `table2`.`col1`
                        AND `table2`.`col3` = 'y' ORDER BY.....");


Дальше с помощью цикла
Код

while ($row = mysql_fetch_array($result)) :

Я вытаскиваю нужные мне данные и делаю еще один запрос к базе из таблицы 3 (table3)

Код

SELECT * FROM `table`
                                WHERE `col1` = '$_GET[$x]'
                                AND `col2` = '$row[`table2`.`col1`]'

Второй запрос нужен только для подсчета 
т.е. выводится он:
echo mysql_num_rows($result1)

Понимаю, что возможно слишком много хочу, но буду очень благодарен, даже не за решение, а за путь к нему smile
PM MAIL   Вверх
Gluttton
Дата 23.2.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Поставте задачу в общем виде. Т.е. даны таблицы такие-то, калонки такие-то, на выходе нужно то-то,  так же как и в первом посте, только для трех таблиц.


--------------------
Слава Україні!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.