左联接C++MySQL库

6kkfgxo0  于 2022-09-18  发布在  Java
关注(0)|答案(1)|浏览(152)

我正在尝试使用左联接访问“CATEGORY”表。我需要在该表中检索字段“name”。

这是我的代码:

void Product::read(MYSQL *connection)
{
MYSQL_RES *result;
MYSQL_ROW row;

if(mysql_query(connection, "SELECT * FROM product LEFT JOIN category ON product.category=category.category_id"))
    std::cout<<"Query failed!!"<<mysql_error(connection)<<std::endl;
else
    result=mysql_store_result(connection);

if(result->row_count>0)
{
    while(row=mysql_fetch_row(result))
    {

        std::cout<<"Name: "<<row[1]<<" Brand: "<<row[3]<<" Price: "<<row[4]<<" Category: "<<row[5]<<" Amount: "<<row[6]<<std::endl;
    }
}
mysql_free_result(result);
}

以下是查询的结果:

Name: Oneplus Nord 2 5G Brand: Oneplus Price: 299.99 Category: 1 Amount: 3
Name: Acer Swift 3 Brand: Acer Price: 899.99 Category: 2 Amount: 5
Name: Bose SoundLink Revolve Brand: Bose Price: 100.23 Category: 1 Amount: 3

怎样才能显示类别的名称?

sgtfey8w

sgtfey8w1#

您可以更具体地说明要选择的列及其顺序。您可以指定table_name.column_name而不是*(如果没有重叠,则只指定column_name;如果要使用别名,则只指定alias_name.column_name),因此可以尝试执行以下操作:

SELECT product.name, product.brand, product.price, category.name, product.amount FROM product LEFT JOIN category ON product.category=category.category_id
  • 我假设列是如何命名的。*

这样,以下代码将更具可预测性,因为索引将基于您在SELECT中编写的内容。

std::cout<<"Name: "<<row[1]<<" Brand: "<<row[3]<<" Price: "<<row[4]<<" Category: "<<row[5]<<" Amount: "<<row[6]<<std::endl;

相关问题