SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 08.08.2011 02:12:43

gif-t
Завсегдатай
Зарегистрирован: 08.08.2011
Сообщений: 74

Помогите составить запрос выборки из двух таблиц

Имею две таблицы:
tab1
tab2

В tab1 хранится профиль пользователя, она содержет поля: id, textinfo, user_name, ban
В tab2 хранятся действия пользователя за каждый день, она содержет поля: id, data, text

В таблице tab1 и tab2 id пользователей соответствуют.
Мне нужно выбрать всех пользователей из tab1 и + одновременно, синхронно получать действия выбранного пользователя за сегодня из tab2, если они есть. Где data - сегодняшняя дата.

Вот я пытаюсь так:
mysql_query(&mysql,"SELECT tab1.id, tab1.textinfo, tab1.user_name, tab2.text FROM tab1, tab2 WHERE tab1.ban = '0' and tab2.data = 8 and tab1.id = tab2.id");

Проблема в том, что если в tab2 нету действий за сегодня, то выборка из tab1 не происходит... как быть?

Пример:

tab1:
0|ertwere|nick1|0|
1|ghyjfhg|nick2|1|
2|xzczxe|nick3|0|
3|werwe|nick4|0|

tab2:
0|7|qqqqqqq|
0|8|wwwwww|
3|6|eeeeeee|
3|8|rrrrrrrr|
1|3|rrrrpppppp|

Сегодня 8-ое число.
В итоге нужно чтобы получилось:

0|ertwere|nick1|wwwwww|
1|ghyjfhg|nick2||
2|xzczxe|nick3||
3|werwe|nick4|rrrrrrrr|

Я так понимаю проблема в tab1.id = tab2.id. Мне нужно чтобы mysql_fetch_row возвращал информацию из обеих таблиц об одном пользователе... Т.е. наверно нужно как-то указать что tab1.ban = '0' обязательное условие, а tab2.data = 8 и tab1.id = tab2.id - нет...
Помогите решить задачку, спасибо

Отредактированно gif-t (08.08.2011 02:16:39)

Неактивен

 

#2 08.08.2011 12:24:04

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

Re: Помогите составить запрос выборки из двух таблиц

SELECT tab1.id, tab1.textinfo, tab1.user_name, t2.`text` FROM tab1 LEFT JOIN (SELECT tab2.id, tab2.`text` FROM tab2 WHERE tab2.data = 8 ) t2 ON tab1.id = t2.id WHERE tab1.ban = '0';

Неактивен

 

#3 08.08.2011 17:10:17

gif-t
Завсегдатай
Зарегистрирован: 08.08.2011
Сообщений: 74

Re: Помогите составить запрос выборки из двух таблиц

Спасибо, не думал что всё так намного сложне smile

Неактивен

 

#4 18.08.2011 19:35:52

gif-t
Завсегдатай
Зарегистрирован: 08.08.2011
Сообщений: 74

Re: Помогите составить запрос выборки из двух таблиц

А подскажите как модифицировать этот запрос, если мне нужно вынуть соответствующие значения из второй таблице, только за 2 даты из двух текстовых полей (text1 из строки за 8-ое и text2 из строки за 9-ое). Вот я попробовал составить, но не работает:

SELECT tab1.id, tab1.textinfo, tab1.user_name, t2.`text1` t2.`text2` FROM tab1 LEFT JOIN (SELECT tab2.id, tab2.`text1` FROM tab2 WHERE tab2.data = 8 ) t2 ON tab1.id = t2.id AND LEFT JOIN (SELECT tab2.id, tab2.`text2` FROM tab2 WHERE tab2.data = 9 ) t2 ON tab1.id = t2.id WHERE tab1.ban = '0';

Спасибо

Неактивен

 

#5 19.08.2011 01:41:49

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

Re: Помогите составить запрос выборки из двух таблиц

SELECT tab1.id, tab1.textinfo, tab1.user_name, t2.`text1`, t3.`text2` FROM tab1
LEFT JOIN (SELECT tab2.id, tab2.`text1` FROM tab2 WHERE tab2.`data` = 8 ) t2 ON tab1.id = t2.id
LEFT JOIN (SELECT tab2.id, tab2.`text2` FROM tab2 WHERE tab2.`data` = 9 ) t3 ON tab1.id = t3.id
WHERE tab1.ban = '0';


P.S. Не стоит в качестве имен столбцов использовать служебные слова: text, data и т.д.

Неактивен

 

#6 19.08.2011 23:14:01

gif-t
Завсегдатай
Зарегистрирован: 08.08.2011
Сообщений: 74

Re: Помогите составить запрос выборки из двух таблиц

Ага, большое спасибо

Неактивен

 

Board footer

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