таблица TRAF
ip | traffic
192.168.0.1 | 321321
192.168.0.1 | 5435
192.168.0.2 | 43543
192.168.0.1 | 3213
192.168.0.2 | 4353
и тд
ну и я сделал таблицу сопоставления
таблица USERS_TRAF
ip | user
192.168.0.1 | вася
192.168.0.2 | петя
192.168.0.3 | коля
Как обьединить таблицы чтоб при выводе из таблицы TRAF заместо ИП подсовывались значение user из таблицы USERS_TRAF? Я просто плохо понимаю, если я обьединю эти таблцы в одну, у меня просто будет еще 2 лишних столбца в таблице, а вывод как реализовать через WHERE?
Спустя 2 минуты, 57 секунд (18.10.2010 - 15:54) Michael написал(а):
SELECT ut.user, t.traffic
FROM TRAF t
LEFT JOIN USERS_TRAF ut ON t.ip = ut.ip
Спустя 2 минуты, 54 секунды (18.10.2010 - 15:57) Renden написал(а):
Michael
Сейчас попробую, а нельзя ли обьяснить? Мне например непонятно откуда береться символ "t" в строке FROM TRAF t , и зачем он нужен..
Сейчас попробую, а нельзя ли обьяснить? Мне например непонятно откуда береться символ "t" в строке FROM TRAF t , и зачем он нужен..
Спустя 1 минута, 43 секунды (18.10.2010 - 15:58) arvitaly написал(а):
Вы храните IP адрес в виде строки?
Спустя 3 минуты, 13 секунд (18.10.2010 - 16:02) Renden написал(а):
arvitaly
Ну да, а надо как-то иначе?
Ну да, а надо как-то иначе?
Спустя 1 минута, 3 секунды (18.10.2010 - 16:03) Michael написал(а):
t - это просто псевдоним для TRAF.
В sql он так и записывается: TRAF t
В sql он так и записывается: TRAF t
Спустя 13 секунд (18.10.2010 - 16:03) arvitaly написал(а):
Да, надо в виде unsigned int http://dev.mysql.com/doc/refman/5.0/en/mis...ction_inet-aton
Спустя 53 секунды (18.10.2010 - 16:04) arvitaly написал(а):
У вас каждому IP адресу сопоставлен юзер?
Спустя 5 минут, 33 секунды (18.10.2010 - 16:09) Renden написал(а):
arvitaly
А есть разница?
Ну нет, не всех, кто-то допустим с ноутом придет, воткнеться в сетку, у него определица ип, а присвоения естественно не будет, он ведь тока пришел как-бы..
Michael, спасибо, правда попробывать не успеваю, рабочий день кончился.. Удачи:)
А есть разница?
У вас каждому IP адресу сопоставлен юзер?
Ну нет, не всех, кто-то допустим с ноутом придет, воткнеться в сетку, у него определица ип, а присвоения естественно не будет, он ведь тока пришел как-бы..
Michael, спасибо, правда попробывать не успеваю, рабочий день кончился.. Удачи:)
Спустя 8 минут, 45 секунд (18.10.2010 - 16:18) arvitaly написал(а):
Цитата |
arvitaly А есть разница? |
разница огромная, строка и число, строка намного больше места, ищется намного дольше, сравнивается намного дольше
Спустя 48 минут, 4 секунды (18.10.2010 - 17:06) Renden написал(а):
arvitaly,
Понятно, просто там еще не только ип, часто еще по dns пишеться хост.
Понятно, просто там еще не только ип, часто еще по dns пишеться хост.
Спустя 49 минут, 51 секунда (18.10.2010 - 17:56) arvitaly написал(а):
ну хост тоже можно в ip превратить...
Спустя 15 часов, 27 минут, 43 секунды (19.10.2010 - 09:24) Renden написал(а):
Хм, попробывал, теперь я понял к чему arvitaly спросил:
Цитата |
У вас каждому IP адресу сопоставлен юзер? |
Поскольку у меня не к каждому ИП сопоставлен юзер, там где нет сопоставления вообще ничего не выводиться, как сделать чтоб если нет сопоставления - выводился просто ИП?
Спустя 3 минуты, 28 секунд (19.10.2010 - 09:27) Michael написал(а):
SELECT IFNULL(ut.user, ut.ip)
Спустя 15 минут, 43 секунды (19.10.2010 - 09:43) Renden написал(а):
Michael
Допер, спасибо.
Допер, спасибо.
Спустя 8 минут, 10 секунд (19.10.2010 - 09:51) arvitaly написал(а):
Цитата |
У вас каждому IP адресу сопоставлен юзер? |
И даже так: у вас каждому IP будет сопоставлен юзер?
Если да, то при обнаружении нового IP сразу его нужно заносить в USERS_TRAF с пустым именем.
И все тогда просто
select sum(traffic), ip from TRAF group by ip
ну можно еще Inner join имя подцепить
Но IP обязательно как число храните, для ускорения индексы не забудьте
Спустя 2 минуты (19.10.2010 - 09:53) Renden написал(а):
Michael
А нет, несовсем, сам mysql то вывел резултьтаты, а как вывести их в пхп то? Какое название $row в таком случае будет?
А нет, несовсем, сам mysql то вывел резултьтаты, а как вывести их в пхп то? Какое название $row в таком случае будет?
Спустя 2 минуты, 11 секунд (19.10.2010 - 09:55) Michael написал(а):
SELECT IFNULL(ut.user, ut.ip) AS xyz
$row['xyz']
Спустя 4 минуты, 21 секунда (19.10.2010 - 10:00) Renden написал(а):
Michael
Век живи - век учись, в очередной раз благодарю)
Век живи - век учись, в очередной раз благодарю)
Спустя 29 минут, 13 секунд (19.10.2010 - 10:29) Renden написал(а):
и надеюсь последний вопрос))
можно ли как-то сделать обьединенние по совпадающим именам или ип?
Ну намиример:
Алеша Попович | 100
Марь Ивановна | 500
Алеша Попович | 150
Чтоб выводилось:
Алеша Попович | 250
Марь Ивановна | 500
у меня ща:
ну естественно я могу заместо LIKE '%Алеша Попович% подсталять переменную полученую $_GET но хотелось бы просматривать всех списком, а не конкретного юзера.
можно ли как-то сделать обьединенние по совпадающим именам или ип?
Ну намиример:
Алеша Попович | 100
Марь Ивановна | 500
Алеша Попович | 150
Чтоб выводилось:
Алеша Попович | 250
Марь Ивановна | 500
у меня ща:
SELECT SUM(traffic) AS trafsumm FROM traffic WHERE host LIKE '%Алеша Попович%'
ну естественно я могу заместо LIKE '%Алеша Попович% подсталять переменную полученую $_GET но хотелось бы просматривать всех списком, а не конкретного юзера.
Спустя 7 минут, 17 секунд (19.10.2010 - 10:36) arvitaly написал(а):
я же написал уже
select t.sum_traf,t.ip,user from (select sum(traffic) as sum_traf, ip from TRAF group by ip) t inner join USERS_TRAF on USERS_TRAF.ip=t.ip
Спустя 31 минута, 14 секунд (19.10.2010 - 11:07) Renden написал(а):
arvitaly
Сорри, я просто сначала не понял что Вы имели ввиду. Все получилось, спасибо.
Тока мне придеться всех заносить, чтоб они выводились? Нельзя ли как-то обьединить ваш запрос и запрос Michael-ля, я ща попробую, мб получиться.
Сорри, я просто сначала не понял что Вы имели ввиду. Все получилось, спасибо.
Тока мне придеться всех заносить, чтоб они выводились? Нельзя ли как-то обьединить ваш запрос и запрос Michael-ля, я ща попробую, мб получиться.
Спустя 3 минуты, 28 секунд (19.10.2010 - 11:11) arvitaly написал(а):
Цитата |
Сорри, я просто сначала не понял что Вы имели ввиду. Все получилось, спасибо. Тока мне придеться всех заносить, чтоб они выводились? |
Ну в таблице TRAF_USERS должны быть все участвующие IP
Спустя 1 минута, 11 секунд (19.10.2010 - 11:12) Renden написал(а):
arvitaly
Я уже понял, я говорю о том нель-зя ли использовать IFNULL?
Я уже понял, я говорю о том нель-зя ли использовать IFNULL?
Спустя 3 минуты, 27 секунд (19.10.2010 - 11:15) arvitaly написал(а):
Цитата |
Я уже понял, я говорю о том нель-зя ли использовать IFNULL? |
если не хотите всех заносить то можно
вернее так наверное
select t.sum_traf,t.ip,user from (select sum(traffic) as sum_traf, ip from TRAF group by ip) t left join USERS_TRAF on USERS_TRAF.ip=t.ip
Спустя 2 минуты, 35 секунд (19.10.2010 - 11:18) Michael написал(а):
Кинь сюда последний запрос, который я тебе давал.
Спустя 18 минут, 7 секунд (19.10.2010 - 11:36) Renden написал(а):
Michael
arvitaly
Все, сделал, огромное вам спс.
arvitaly
Все, сделал, огромное вам спс.
Спустя 51 минута, 2 секунды (19.10.2010 - 12:27) Renden написал(а):
Чем дальше в лес, тем больше дров..
Очередной вопрос:
Почему нельзя дальше использовать 'xyz' в запросе?
Ну например так:
Как тогда использовать дальше в запросе то что вернул IFNULL?
Да и есть у кого нормальная дока (книга) по mysql?, то что выдает гугл, дрова полные, черт ногу сломит, больше смахивает на камасутру чем на доку..
Очередной вопрос:
SELECT IFNULL(ut.user, ut.ip) AS xyz
Почему нельзя дальше использовать 'xyz' в запросе?
Ну например так:
SELECT IFNULL(ut.user, ut.ip) AS xyz еще параметры WHERE xyz = 'бла-бла'
Как тогда использовать дальше в запросе то что вернул IFNULL?
Да и есть у кого нормальная дока (книга) по mysql?, то что выдает гугл, дрова полные, черт ногу сломит, больше смахивает на камасутру чем на доку..