Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Левое обьединение, Левое обьединение сразу с 2 таблицами 
:(
    Опции темы
skifoz
Дата 20.11.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообщем есть у меня таких три таблицы

keys 
id_keyword|id_accoun|url

position
position|day|id_keyword

change_position
daily|id_keyword

Как можно сделать выбрку по этим таблицам, так, чтобы если в таблице change_position или position нет данных то вывелись бы только данные таблицы keys

Я сейчас делаю вот такую выборку

Код

SELECT
`position`.`position` AS position,
`keys`.`url` AS url
FROM
`keys` LEFT JOIN `position`
ON
(`keys`.`id_account` = '1'
  AND
  `position`.`id_keyword` = `keys`.`id_keyword`
)
WHERE
`keys`.`id_account` = '1'


Этот код прекрасно работает, делает выборку по главной таблице keys и выводит данные, плюс к этому если в таблице position тоже есть данные то и их он выыводит

Но мне нужно чтобы он еще и смотрел в таблицу change_position и тоже если есть то выводил данные
я делал такое запрос, но он не прокатывает че то

Код

SELECT
`position`.`position` AS position,
`keys`.`url` AS url,
`change_position`.`daily` AS daily
FROM
`keys` LEFT JOIN `position`,`change_position`
ON
(`keys`.`id_account` = '1'
  AND
  `position`.`id_keyword` = `keys`.`id_keyword`
 AND
 `change_position`.`id_keyword` = `keys`.`id_keyword`
)
WHERE
`keys`.`id_account` = '1'



Но этот запрос не прокатывает, он мне выводит все ключи которые есть в таблице keys а мне нужны только ключи определнного пользователя с id_account.
Кто-нибуть знает как сделать левое обьединение сразу с двумя таблицами??
Подскажи плз...




Это сообщение отредактировал(а) skifoz - 20.11.2006, 17:45
PM MAIL WWW   Вверх
skyboy
Дата 20.11.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



не ясна логика связывания таблиц.
Цитата(skifoz @  20.11.2006,  16:43 Найти цитируемый пост)
чтобы если в таблице change_position или position нет данных

каких именно данных? в смысле - если таблицы вовсе пустые?
Цитата(skifoz @  20.11.2006,  16:43 Найти цитируемый пост)
вывелись бы только данные таблицы keys

все данные из таблицы keys, что ли?
Код

FROM
`keys` 
LEFT JOIN `position`,`change_position`
ON
(`keys`.`id_account` = '1'
  AND
  `position`.`id_keyword` = `keys`.`id_keyword`
 AND
 `change_position`.`id_keyword` = `keys`.`id_keyword`
)
WHERE
`keys`.`id_account` = '1'

Зачем у тебя в условии на ON keys.id_account = 1, коль у тебя это условие есть в WHERE? 
Давай, описывай подробнее задачу

Добавлено @ 17:51 
при чем здесь PHP?
PM MAIL   Вверх
skifoz
Дата 20.11.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Такс, тему действительно не удачно создал, извиняюсь, че то приглючило)

Задача следущая, у юзера в системе есть ключи. которые он сам добавляет.
Так же существует проверка этих ключей, проверка записывается в таблицу position, а так же в таблицу history, поэтому, если юзер только что добавил ключ, то он должен его видеть, но в таблице position в это время не может быть никакх данных, далее в таблице change_position мы записываем разницу в изменениях, то есть например у нас в таблице history записано например за сегодняшний день проверка и за месяц назад. так вот в таблицу change_position мы записываем эту разницу, чтобы динамически потом не высчитывать. то есть в этой таблице например может быть месяц не будет данных, но проверять при ее выборке все равно надо эту таблицу, вдруг там все же есть эти данные.

В прицнипе и все. Вот ломаю голову как сделать так...

насчет
Цитата

Зачем у тебя в условии на ON keys.id_account = 1, коль у тебя это условие есть в WHERE? 

Действительно переборщил)

Цитата

не ясна логика связывания таблиц.

Все таблицы связываются по ИД ключа. (id_keyword)

Цитата

все данные из таблицы keys, что ли?

Да все url всех кейвордов которые есть в данной таблице, а нужно только кейворды данного пользователя.




Когда я вывожу на страницу данные с этих трех таблиц я должен получить следущее

url|position|daily
1|0|0

или если есть в таблице postion данные по проверке то 
1|10|0

или если есть в таблице change_position данные по разнице в месяц то
1|10|+2

НО! эти таблицы могут и не иметь данных, так как например не прошел еще месяц, или мы еще не разу не делали проверку по ключу.

Теперь я думаю логика понятна...
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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