Как правильно выполнить запрос?

Имеется таблица A которая содержит product_id и имеется таблица B которая содержит product_id и status, как выполнить запрос чтобы с таблицы A получить все product_Id и отправить product_id на сравнение таблице B и с таблице B получить все статусы по product_id таблицы A?

SELECT 
    table_a.product_id, table_b.status 
FROM 
    A table_a LEFT JOIN B table_b 
    ON table_a.product_id = table_b.product_id

A и B - так таблицы называются у вас в базе,
table_a и table_b - их синонимы в запросе
ну или вот так:

db_get_hash_single_array("SELECT 
    table_a.product_id as pid, table_b.status as pstat
FROM 
    A table_a LEFT JOIN B table_b 
    ON table_a.product_id = table_b.product_id",
["pid", "pstat"]);

получите массив

"product_id" => "статус",
...

извиняюсь, запрос чуть расширенный, исходя из этого у меня уже есть массив ($p_arr) который выводит:

Array
(
    [0] => Array
        (
            [product_id] => 120
        )

    [1] => Array
        (
            [product_id] => 168
        )

    [2] => Array
        (
            [product_id] => 173
        )
		
		.....
)

как отправить данные product_id на ваш запрос чтобы сравнить с таблицей B product_id и с таблицы B вывести status в соответствии с отправленными product_id? :slight_smile:

То есть ваш список product_id - это не содержимое таблицы, это именно массив, уже полученный прежде?
тогда

db_get_hash_single_array("SELECT  product_id, status
FROM  B WHERE product_id IN (?n)", $p_arr);

только ваш массив p_arr надо лолучать не через db_get_array, а через db_get_field(“SELECT pid FROM …”)
чтобы он был одномерным массивом

Array
(
    120, 168, 173, .....
)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘?n)’ at line 1 (1064)SELECT product_id, status FROM cscart_custom_base WHERE product_id_id IN (?n)

Покажите как именно Вы вызывали запрос и какие параметры туда передавали.

product_id_id название не верное id два раза , или так задумано?

1 лайк

Пропустил букву, db_get_fields

1 лайк