SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.11.2009 11:14:11

Hafner
Участник
Откуда: Москва
Зарегистрирован: 21.01.2009
Сообщений: 16

Количество строк из 2-х таблиц

Доброго времени суток!

Есть 2 таблицы:
tab1
id name
--------
1 player
2 gamer
3 player
4 player
5 gamer
6 user

tab2
bid name
--------
1 user
2 user
3 player
4 gamer
5 gamer
6 player

Необходимо из 2-х таблицы получить общее кол-во каждого из значений name и отсортировать по кол-ву значений, то есть нужно получилось следующее:
player 5
gamer 4
user 3

Для одной таблицы я делаю так:
SELECT count(*), name FROM tab1 GROUP BY name ORDER BY count(*) DESC LIMIT 3

Как это применить для двух таблиц?

Неактивен

 

#2 03.11.2009 11:55:39

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Количество строк из 2-х таблиц

SELECT count(*), name FROM (select name from tab1 union all select name from tab2) x GROUP BY name ORDER BY count(*) DESC LIMIT 3;

Неактивен

 

#3 03.11.2009 12:50:14

Hafner
Участник
Откуда: Москва
Зарегистрирован: 21.01.2009
Сообщений: 16

Re: Количество строк из 2-х таблиц

Благодарю!

Неактивен

 

#4 03.11.2009 23:28:04

Hafner
Участник
Откуда: Москва
Зарегистрирован: 21.01.2009
Сообщений: 16

Re: Количество строк из 2-х таблиц

Возникла ещё одна проблемка. Есть 2 таблицы:
tab1
bid name
--------
1 player
2 gamer
3 player
4 player
5 gamer
6 user

tab2
bhid name total
--------------
1 user 5
2 user 3
3 player 7
4 gamer 7
5 gamer 2
6 player 1

Во второй таблице имеется поле, которое в первой таблице отсутствует.
Необходимо сделать селект из двух таблицы, делаю так:
SELECT * FROM (
(SELECT bid AS id, name FROM tab1) UNION ALL
(SELECT bhid AS id, name FROM tab2)) T ORDER BY name
Но ещё требуется, чтобы селектило и 3-е поле из tab2, а так как в tab1 такого нет, то значение этого поля для tab1 было NULL.

Как такое можно сделать?

Неактивен

 

#5 03.11.2009 23:51:56

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Количество строк из 2-х таблиц

SELECT * FROM (SELECT bhid AS id, name, total FROM tab2 UNION ALL SELECT bid, name, NULL FROM tab1) T ORDER BY name;

Неактивен

 

#6 04.11.2009 00:48:50

Hafner
Участник
Откуда: Москва
Зарегистрирован: 21.01.2009
Сообщений: 16

Re: Количество строк из 2-х таблиц

Ок, спасибо! smile

Неактивен

 

#7 11.12.2009 13:37:32

skylink
Участник
Зарегистрирован: 11.12.2009
Сообщений: 3

Re: Количество строк из 2-х таблиц

Помогите, составить запрос третий день листаю форум ничего подобного не нашел. Постю здесь, так как этот пост тоже про ставки.

Итак.
Имеется две таблицы:
TABLE bids
+------+--------+
| bidder|  bid      |
+------+--------+
|      1 |  5.0000 |
|      3 | 10.0000 |
|      1 | 15.0000 |
|      1 | 20.0000 |
|      3 | 50.0000 |
|      1 | 60.0000 |
+-------+-------+
и
TABLE users
+----+---------+
| id   | nick       |
+----+---------+
|  1   | antony  |
|  2   | evgeny  |
|  3   | vas9     |
+----+---------+

Имеется такой запрос:

SELECT bidder, bid, u.nick FROM bids
LEFT JOIN users u ON (u.id = b.bidder);


Что в него нужно добавить чтоб получить nick сделавший максимальный bid, т.е что запрос
выдал следущее:
+--------+---------+
| nick      | bid        |
+--------+---------+
|  antony | 60.0000 |
+--------+---------+

Неактивен

 

#8 11.12.2009 13:43:04

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Количество строк из 2-х таблиц

ORDER BY bid DESC LIMIT 1

Неактивен

 

#9 11.12.2009 15:51:30

skylink
Участник
Зарегистрирован: 11.12.2009
Сообщений: 3

Re: Количество строк из 2-х таблиц

paulus
Спасибо. Решение хорошее, но не для моего случая.
а можно тоже самое сделать, но при участии функции MAX() сделать?

Отредактированно skylink (11.12.2009 15:51:57)

Неактивен

 

#10 11.12.2009 16:20:55

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Количество строк из 2-х таблиц

Сделайте, я не против wink

Отталкиваться можно от чего-то такого:
SELECT ... FROM tablename WHERE bid = (SELECT MAX(bid) FROM tablename)

Неактивен

 

#11 11.12.2009 16:41:13

skylink
Участник
Зарегистрирован: 11.12.2009
Сообщений: 3

Re: Количество строк из 2-х таблиц

Огромное спасибо! Неделю голову ломал..теперь все работает как нужно.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson