【问题标题】:I need inner join for my project FLASK PYTHON我的项目需要内部连接 ​​FLASK PYTHON
【发布时间】:2020-01-19 10:14:41
【问题描述】:

我的内部连接有问题。

请查看此代码。

@app.route('/products', defaults={'page':1})
@app.route('/products/<int:store_id>', methods=['GET'])
def productcheck(store_id):
    if 'loggedin' in session:
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute("SELECT * FROM products WHERE store_id=%s", [store_id])
        data = cursor.fetchall()
        sql = "SELECT categories.category_title AS product_category FROM products INNER JOIN categories ON products.product_category = categories.id"
        cursor.execute(sql)
        myresult = cursor.fetchall()
        if data:
            return render_template('productstore.html', data=data, myresult=myresult)
        else:
            return 'Error loading #{id}'.format(id=id)
    else:
        return redirect(url_for('login'))

<table class="table">
  <thead>
    <tr>
      <th scope="col">product name</th>
      <th scope="col">product price</th>
      <th scope="col">category</th>
      <th scope="col">delete</th>
    </tr>
  </thead>
  {% for item in data %}
  <tbody>
    <tr style="font-size: 22px;">
      <th scope="row">{{ item.product_title }}</th>
      <td>{{ item.product_price }}</td>
      <td>{{ "product category should be here" }}</td>
      <td><a href="/delete/{{ item.slug }}" class="fa fa-edit" style="font-size: 34px;"></a></td>
    </tr>
    {% endfor %}

product 表中有 categoryid,category 表中有 categoryname。

我想匹配这两个值并显示类别名称而不是类别 ID

这是产品表

+---------------------+------------------+------+-----+---------+----------------+
| Field               | Type             | Null | Key | Default | Extra          |
+---------------------+------------------+------+-----+---------+----------------+
| id                  | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| store_id            | int(11)          | YES  |     | NULL    |                |
| product_title       | varchar(255)     | YES  |     | NULL    |                |
| product_price       | varchar(30)      | YES  |     | NULL    |                |
| product_count       | int(11)          | YES  |     | NULL    |                |
| product_description | text             | YES  |     | NULL    |                |
| product_category    | int(11)          | YES  |     | NULL    |                |
| image               | varchar(100)     | YES  |     | NULL    |                |
| date                | varchar(30)      | YES  |     | NULL    |                |
| slug                | varchar(100)     | YES  |     | NULL    |                |
| product_link        | varchar(255)     | YES  |     | NULL    |                |
| product_ignore      | int(14)          | NO   |     | NULL    |                |
+---------------------+------------------+------+-----+---------+----------------+
12 rows in set (0.01 sec)

这是分类

+----------------------+------------------+------+-----+---------+----------------+
| Field                | Type             | Null | Key | Default | Extra          |
+----------------------+------------------+------+-----+---------+----------------+
| id                   | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| store_id             | int(11)          | YES  |     | NULL    |                |
| category_title       | varchar(200)     | YES  |     | NULL    |                |
| category_description | text             | YES  |     | NULL    |                |
| date                 | varchar(30)      | YES  |     | NULL    |                |
| slug                 | varchar(100)     | YES  |     |         |                |
+----------------------+------------------+------+-----+---------+----------------+
6 rows in set (0.02 sec)

我自己修好了,谢谢大家。 更正后的代码如下。

@app.route('/products/<int:store_id>', methods=['GET'])
def productcheck(store_id):
    if 'loggedin' in session:
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute("SELECT * FROM products LEFT JOIN categories ON products.product_category = categories.id WHERE products.store_id=%s", [store_id])
        data = cursor.fetchall()
        if data:
            return render_template('productstore.html', data=data)
        else:
            return 'Error loading #{id}'.format(id=id)
    else:
        return redirect(url_for('login'))

【问题讨论】:

  • 只需添加表格格式即可帮助您。
  • 我刚刚更新了。

标签: python mysql flask render


【解决方案1】:

尝试使用内部连接来反转你,除了它似乎没问题:

sql = "SELECT categories.category_title AS product_category" \
      "FROM categories" \
      "INNER JOIN products" \
      "ON products.product_category = categories.id"

【讨论】:

  • 当我渲染它会如何被列出?因为我想列出,如果 pruduct_categor 是 1,它会显示鞋子,如果它是 2,它会显示 T 恤
猜你喜欢
  • 2019-06-03
  • 2016-05-29
  • 2021-10-15
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
相关资源
最近更新 更多