INSET INTO, left join

AKAPE

Новичок
INSET INTO, left join

нужно вставить данные в таблицу, которые ЧАСТИЧНО беруться из другой таблицы (по связи ID), но если такое id не найдено - просто вставить NULL, ... что-то вроде LEFT JOIN но при INSERT-е, в поиске не нашел, в мануле тоже :confused:
 

Falc

Новичок
AKAPE
>>просто вставить NULL

Вставить нул это как? Ничего не вставлять?
 

Ashotovich

Новичок
Пример можно привести?

Если решать "в лоб" - то просто можно делать селект из "другой таблицы" по каждому id, и если число строк равно 0, то вставлять NULL.

-~{}~ 16.03.04 18:02:

Автор оригинала: Falc
Вставить нул это как? Ничего не вставлять?
Человек, видимо, имеет в виду составление линковой таблицы "многое ко многому". Например:

id_1 | id_2
------------------
1 | 1
2 | 8
3 | NULL
4 | 21

Другое дело, что обо всем этом приходится догадываться... =))))
 

AKAPE

Новичок
пардон за формулировку :)

INSERT INTO forum_posts(topic_id,post_author,post_author_id,post_text,post_time) SELECT '".$topic_id."','".mysql_escape_string($_SESSION['nick'])."',id,'".mysql_escape_string($_POST['body'])."',NOW() FROM user_info WHERE nick='".mysql_escape_string($_SESSION['nick'])."' LIMIT 1"

таким образом SELECT выберется только если запись существует в табличке user_info, а мне нужно чтобы выбираемый id был попусту NULL, если записи в user_info нет (человек не зарегистрирован)
 

Falc

Новичок
Ashotovich
Я знаю что человек имеет виду, просто хочу научить его грамотно формулировать вопрос. :)
 

Falc

Новичок
AKAPE
Почему бы тебе не хранить в сесии не только ник, но и еще user_id?
 

AKAPE

Новичок
именно так я и сделал, ... просто хотелось запрос сам ради интереса построить.
 

Falc

Новичок
AKAPE
Запросом можно, но тогда придется выбирать из некоторой абстрактной таблицы.
что-то вроде

INSERT ...
SELECT user_info.id
FROM table
LEFT JOIN user_info ON nick='".mysql_escape_string($_SESSION['nick'])."'
LIMIT 1

Но это не очень хорошее решение.
 
Сверху