Как присоединиться к SQL на сериализованном первичном ключе PHP - PullRequest
1 голос
/ 02 июля 2010

Хорошо, это странно, я знаю. Я просто хочу идеи о том, как с этим справиться.

Я хочу сделать объединение

---   ---
 A     B
---   ---
id    id
idB
---   ---

Стандартное объединение будет:

SELECT *
FROM B
JOIN A ON A.idB = B.id
WHERE A.id = 3

Но здесь мой idB - это не внешний ключ int, а сериализованный PHP.

Например, вместо 5 это "int (5)".

Есть ли способ выполнить объединение (есть ли функция «сериализации» SQL?), Например:

SELECT *
FROM B
JOIN A ON A.idB = SERIALIZE(B.id)
WHERE A.id = 3

Важно : Я не могу знать тип внешнего ключа. Здесь это "int (5)", но это также может быть строка, массив ...

1 Ответ

0 голосов
/ 02 июля 2010

Формат сериализации PHP - это то, что понимает только PHP, и он совершенно не связан с SQL.Вы просто не можете ничего сделать на стороне сервера базы данных: у вас нет информации, хранящейся в базе данных в удобном для использования формате.Это все равно, что пытаться найти слова на картинке отсканированного документа.

Вы можете добавить новый столбец A.unserialized_b_id и запустить скрипт PHP для загрузки его с начальной загрузкой данных.После этого для обновления самих столбцов потребуются новые вставки.

Однако вы говорите, что это может быть любой тип данных.Вы должны спросить себя, имеет ли смысл выполнять объединение, когда идентификатор не является скалярным значением.Если ответ нет , то просто сделайте ваш PHP вставкой NULL в таких случаях.Если ответ да , тогда будет весело :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...