MySQL запрос

EA
На сайте с 15.02.2007
Offline
29
433

Помогите составить запрос.

Есть две таблицы. t1 и t2

Нужно вытащить данные из t1 и кол-во строк во второй, где t1.id=t2.name и t2.col1='value'

el_aspect добавил 26.09.2009 в 12:22

Сделал так

SELECT t1.id, (SELECT count(*) as count FROM t2 WHERE name=t1.id) AS count FROM t1

"Конкурс" (/ru/forum/201132) и "Фото конкурс" (/ru/forum/212504) для DLE.
NZ
На сайте с 20.09.2009
Offline
12
#1

$query = mysql_query("SELECT * FROM `t1`, `t2` WHERE `t2`.`name` = `t1`.`id` and `t2`.`col1` = 'value'");

$count = mysql_num_rows($query);

N
На сайте с 06.05.2007
Offline
419
#2

Иногда дамп данных скажет лучше слов. Я вот не могу понять что именно вы хотели. А предложенное решение еще больше запутывает.

может как-то так ?

select t1.*,g_t2.cnt from t1,

( select name,count(*) cnt from t2 group by name) g_t2

where t1.id=g_t2.name;

Кнопка вызова админа ()
EA
На сайте с 15.02.2007
Offline
29
#3

допусти в t1 есть одна строка id=1

в t2 есть три строки где name=1

нужно получить данные из таблицы t1, а именно id=1

и кол-во строки из t2, где t1.id=t2.name и t2.col1='value', тоесть count=3

N
На сайте с 06.05.2007
Offline
419
#4

То есть запрос на один конкретный t1.id ? А откуда возникает ограничение по t2.col1='value' ?

на первый взгляд вы нормально все написали, только нужно ограничение на t1.id :

SELECT t1.id, (SELECT count(*) as count FROM t2 WHERE name=t1.id) AS count FROM t1

where t1.id='123123';

некоторые скажут, что, мол, подзапросы - зло, но в этом случае он выполняется один раз.

NZ
На сайте с 20.09.2009
Offline
12
#5

Вроде, я предложил то, что подходит по заданию.

EA
На сайте с 15.02.2007
Offline
29
#6
А откуда возникает ограничение по t2.col1='value' ?

Это дополнительное условие выбора для t2, в принципе роли не играет.

Мой вариант работает, думаю он самый удачный, всем спасибо.

el_aspect добавил 26.09.2009 в 12:51

Вроде, я предложил то, что подходит по заданию.

Ваш вариант посчитает кол-во строк выбранных из таблицы

NZ
На сайте с 20.09.2009
Offline
12
#7

Ну по это и просил :-)

[Удален]
#8
el_aspect:
Помогите составить запрос.
Есть две таблицы. t1 и t2
Нужно вытащить данные из t1 и кол-во строк во второй, где t1.id=t2.name и t2.col1='value'

el_aspect добавил 26.09.2009 в 12:22
Сделал так

SELECT t1.id, (SELECT count(*) as count FROM t2 WHERE name=t1.id) AS count FROM t1

select t1.id,count(*) as count from t1 left join t2 on t2.name=t1.id and t2.col1=value group by t2.col1,t2.name

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий