Левый Присоединение первичного ключа к нормальному столбцу вызывает хаос

Ссылка ниже связана с моим вопросом:

Eloquent Left Join, получивший неожиданный результат

Вот моя таблица, чтобы дать обзор.

Опции:

введите описание изображения здесь

Событие Meta:

введите описание изображения здесь

Ну, это действительно та же проблема, но я думал, что это из-за Красноречивого. Когда я попытался использовать PDO для запроса проблемы в моей ссылке. Он по-прежнему делает то же самое.

$query = $db->prepare( " SELECT * FROM event_meta a LEFT JOIN options b ON b.id = a.meta_value WHERE a.meta_key = 'logo' "); $query->execute(); $object = $query->fetchObject(); echo $object->value, '<br>'; echo $object->meta_value; 

Итак, что я сделал, у меня есть таблица с именем event_meta и попытка присоединиться к таблице options для подключения к ним. Я использую b.id а для event_metaa.meta_value

То, что я хочу сделать на моем конце, – сначала получить значение параметра. Сначала проверить, пуст ли он. Если он пуст, я получу значение event_meta.meta_value для его вывода.

Так, например, по моему запросу выше, я хочу получить логотип meta_key . Он должен получить вывод имени изображения. Но так как я подключен к таблице options он должен получить options.value . При выдаче значения options.value он должен быть пустым. Поскольку meta_value логотипа не соответствует любым параметрам options.id . Но он возвращает значение Top Up .

Related of "Левый Присоединение первичного ключа к нормальному столбцу вызывает хаос"

Значение параметра «Top Up» options.id равно 6. Числовое значение вашего логотипа (предположительно двоичного изображения) в event_meta.meta_value равно 6, так как оно начинается «6b3b …..». Вот почему они сравнивают равные.

При сравнении числового поля с полем символов MySQL будет принимать числовое значение поля символа и сравнивать его с номером. То, что вам не хватает, состоит в том, что числовое значение символьного поля, такого как «123abc3478uweefauiofyh3489h» в MySQL, равно 123.

event_meta.meta_value числовое поле options.id в том же типе, что и event_meta.meta_value в вашей JOIN.

Использовать это:

 $query = $db->prepare( "SELECT * FROM options LEFT OUTER JOIN event_meta ON options.id=event_meta.meta_value WHERE event_meta.meta_key= 'event_package';");