2012-06-22 5 views
1

У меня есть 2 таблицы, с которыми я работаю, которые используют один и тот же столбец; одна таблица содержит текст, а другая таблица содержит изображения; они используют столбец listing_id так, чтобы правый текст отображался с правильными изображениями;Справочные автоинкрементные столбцы?

моя проблема состоит в том, что, поскольку column listing_id является auto-increment, моя первая таблица может иметь вставку в запрос, способную вставлять текст, а затем +1 column listing_id; однако в 2-й таблице я использую другой запрос INSERT INTO, не будет иметь права listing_id,

, потому что некоторые записи для listing_id были удалены, что означает, что листинг_list второй таблицы всегда будет за 1-й таблицей listing_id;

Как мне обратиться к столбцу listing_id?

+0

Если у вас всегда есть текст и изображение, вы можете объединить их в один стол, что сделает вашу жизнь намного проще! – andrewsi

+0

Не очень хорошая идея, если вы хотите иметь нормализованную базу данных. Он говорит imageS, что означает, что в первой таблице может быть 1000 изображений для записи, а не только для одного. – GDP

ответ

2

Вам необходимо создать столбец INT, называемый как «parent_id» в зависимых таблицах, в котором хранится идентификатор основной таблицы, на которую он ссылается. Когда вы выбираете записи из первого, вы затем присоединяете таблицы с полем auto_increment первого поля против «parent_id» второго.

Как упоминает MrSlayer, используйте вновь вставленный идентификатор первой таблицы для обновления «parent_id». Вам должно, как правило, иметь уникальное поле идентификатора во второй таблице для уникальности, но оно не должно быть частью отношения к первой таблице.

Если вы не знаете, как получить идентификатор, который первая таблица auto_increments будет вставлять, используйте mysql_insert_id().

mysql_query("INSERT INTO table1 ..."); 
echo "Last inserted record_id in table1 was " . mysql_insert_id(); 

INSERT INTO table1 (mytextcolumn) VALUES('text'); 
INSERT INTO table2 (parent_id,image_name) VALUES(LAST_INSERT_ID(),'someimage.png'); 
+0

или 'myslqi_insert_id()', если вы используете 'MySQLi'-интерфейс так, как должны, или' $ db-> insert_id' в стиле Oo – TerryE

+0

Правда ... однако вы делаете вставку, получаете, что я ее использовал, и использовать его в parent_id при добавлении в следующие таблицы. – GDP

+0

@GDP. Я не вижу ясного примера, это код типа «$ somevar» mysql_insert_id(), будет ли $ somevar хранить последний id? –

Смежные вопросы