Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2018, 17:17
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

SQL запрос (работает, а вот поправить не могу)....
SELECT __people_person_list.* , __array_of_add_data.`act_date` AS `act_date` FROM __people_person_list INNER JOIN __array_of_add_data ON (__people_person_list.`id` = __array_of_add_data.`uid`) LIMIT 500


Это запрос, проблема только одна - он выбирает только те записи, для которых act_date найден. Если такового нет, то из основной таблицы ничего не выбирается. Однако, хочется все равно делать выборку и желательно придавать значение NULL в этом случае, правда вот как - непонятно...



Последний раз редактировалось Sergey999, 01.05.2018 в 17:43.
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2018, 18:40
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Из такого описания сложно что-то понять, но могу предположить что вам надо заменить
INNER JOIN
на
LEFT JOIN
Ответить с цитированием
  #3 (permalink)  
Старый 01.05.2018, 19:01
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

Хм, даже не знаю как еще объяснить. Теперь результаты и правда есть. Если по структуре:

CREATE TABLE IF NOT EXISTS `__array_of_add_data` (
`id` int(11) NOT NULL,
  `uid` int(11) NOT NULL,
  `key_id` int(11) NOT NULL,
  `act_date` date NOT NULL,
  `int_val` int(11) DEFAULT NULL,
  `str_val` varchar(255) NOT NULL,
  `text_val` text NOT NULL,
  `attr_data` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `__people_person_list` (
`id` int(11) NOT NULL,
  `tag_name` varchar(255) NOT NULL,
  `full_name` varchar(200) NOT NULL,
  `date_of_birth` date NOT NULL DEFAULT '1000-01-01',
  `date_of_dead` date NOT NULL DEFAULT '1000-01-01',
  `country_code` varchar(5) NOT NULL,
  `city_of_birth` varchar(255) NOT NULL,
  `skill_point` int(11) NOT NULL,
  `biography` text
) ENGINE=InnoDB AUTO_INCREMENT=61943 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;


В итоге, я должен из второй таблицы выбрать все записи по одной штуке, и для каждого из них из __array_of_add_data при совпадении id и uid самое последнее значение act_date. При это во WHERE будет еще условие вида key_id IN (список подходящих id). Вот что нужно сделать на самом деле....

Последний раз редактировалось Sergey999, 01.05.2018 в 19:03.
Ответить с цитированием
  #4 (permalink)  
Старый 01.05.2018, 20:12
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

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

Последний раз редактировалось Sergey999, 01.05.2018 в 20:16.
Ответить с цитированием
  #5 (permalink)  
Старый 02.05.2018, 02:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Используйте MAX и GROUP BY id.

__array_of_add_data.`act_date` AS `act_date` - тут алиас бессмыслен
Ответить с цитированием
  #6 (permalink)  
Старый 02.05.2018, 02:52
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

Сообщение от laimas Посмотреть сообщение
Используйте MAX и GROUP BY id.

__array_of_add_data.`act_date` AS `act_date` - тут алиас бессмыслен
Да верно, я уже понял это с GROUP BY немного, ну пока мне точно есть в каком смысле рассуждать....
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как составить SQL запрос SektoidMan Серверные языки и технологии 3 16.02.2016 12:11
Не могу разобраться, как работает функция Dionid Общие вопросы Javascript 4 21.06.2014 18:14
Синхронно, асинхронно... не могу организовать логику Hapson AJAX и COMET 3 17.03.2014 02:22
Вот пример кода на JS Он работает. А вот... Averin500 Events/DOM/Window 1 18.12.2012 22:45
Скрипт работает в IE, а вот в Mozille не в какую (( Владимир-SEOTV Javascript под браузер 2 27.07.2012 18:35