Ссылка MySQL на поле в другой строке

#mysql

#mysql

Вопрос:

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

Например, если строка with id = 1 имеет значение "bar" в столбце foo , строка with id = 3 должна иметь значение "[1]" (или что-то подобное; 1 указывает на строку with id = 1 ) в столбце foo , и MySQL должен заменить это значение на "bar" при возврате массива.

Я не говорю о UPDATE запросе. Я пытаюсь создать запрос ВЫБОРА, который произведет соответствующую замену. Я хочу [1] быть постоянным значением этой строки и отражать все foo , что должно быть в указанной строке.

Комментарии:

1. Вам действительно нужно прочитать о реляционных базах данных, теории множеств и синтаксисе SQL. Ваш вопрос указывает на очень мало знаний о том, как работает реляционная база данных.

Ответ №1:

Вы могли бы попробовать что-то подобное, но, не зная больше, ваш пробег может отличаться.

Кроме того, просто используйте 1 , а не [1] в качестве ссылочного значения

 SELECT a.id, b.foo
FROM `foo_table` a
INNER JOIN `foo_table` b
    ON CAST(a.foo AS UNSIGNED) = b.id
WHERE a.id = 3 -- or whatever
 

Обновить

Я был бы более склонен сделать дизайн вашей таблицы более конкретным. Например, попробуйте эту структуру

 CREATE TABLE `foo_table` (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    foo VARCHAR(255),
    parent_id INT NULL,
    FOREIGN KEY (parent_id) REFERENCES `foo_table` (id)
        ON DELETE CASCADE
) ENGINE=INNODB;
 

Тогда ваш запрос может быть

 SELECT a.id, COALESCE(b.foo, a.foo) AS foo
FROM foo_table a
LEFT JOIN foo_table b
    ON a.parent_id IS NOT NULL
    AND a.parent_id = b.id;