Я хочу сделать один MYSQL запрос для 2 таблиц и получить результаты в виде одного объекта / массива. Моя проблема заключается в том, что запрос должен соответствовать набору идентификаторов, которые имеют разные имена в обеих таблицах. Допустим, у меня есть таблица urls
и таблица products
, и у них обоих есть столбец, который соответствует идентификатору, который я ищу, но назван по-разному ... в таблице URL он называется resource_id, а в таблице продуктов это называется productid.
URLS TABLE:
id | resource_id | url
PRODUCTS TABLE:
productid | title | description | thumbnail
Итак, в php у меня есть список идентификаторов, которые используются для извлечения обеих таблиц вместе, НО только там, где urls.resource_id
и products.productid
равно этим идентификаторам.
Вот что у меня есть:
$ids = ["18552", "18554", "18555", "18556"];
$newIds = implode(",",$ids);
$q3 = " SELECT products.title as title, urls.url as url
FROM urls, products
WHERE urls.resource_id IN ($newIds)
AND products.productid IN ($newIds)";
В данный момент это возвращает 4 результата, основанных на переменной $ids
4 раза - всего 16 результатов. Я думаю, что это связано с частью WHERE urls.resource_id IN ($newIds) AND products.productid IN ($newIds
запроса, так как 4 * 4 = 16, но я могу ошибаться.
Что-то вроде этого:
{ "title": "Prod 1", "url": "prod-one.html" },
{ "title": "Prod 2", "url": "prod-two.html" },
{ "title": "Prod 3", "url": "prod-three.html" },
{ "title": "Prod 4", "url": "prod-four.html" },
{ "title": "Prod 1", "url": "prod-one.html" },
{ "title": "Prod 2", "url": "prod-two.html" },
{ "title": "Prod 3", "url": "prod-three.html" },
{ "title": "Prod 4", "url": "prod-four.html" },
{ "title": "Prod 1", "url": "prod-one.html" },
{ "title": "Prod 2", "url": "prod-two.html" },
{ "title": "Prod 3", "url": "prod-three.html" },
{ "title": "Prod 4", "url": "prod-four.html" },
{ "title": "Prod 1", "url": "prod-one.html" },
{ "title": "Prod 2", "url": "prod-two.html" },
{ "title": "Prod 3", "url": "prod-three.html" },
{ "title": "Prod 4", "url": "prod-four.html" },
Не совсем уверен как добиться этого без повторов ... никаких предложений?
ТАКЖЕ - эта база данных взята из системы корзины покупок, поэтому я постарался максимально упростить пример, не теряя ясности в своем вопросе / примере.
Заранее спасибо!