簡體   English   中英

連接具有不同值前綴的表

[英]Joining tables with different value prefix

我正在嘗試join兩個表,但問題是在第二個表中,與表1相同的值帶有前綴(此表在opencart安裝后生成-演示數據):

Table 1: category
 -----------------------------
| category_id | category_name |
|-----------------------------|
|     1       |  Components   |
|     2       |    Laptops    |


Table 2: seo_url
 ------------------------------------------
| seo_url_id  |    query      |   keyword  |
|------------------------------------------|
|     35      | category_id=1 | components |
|     78      | category_id=2 | laptops    |

因此,類別的ID在表1中的列category_id中,並且是一個數字,但在表2中 ,在列query並且其前綴是category_id= ,然后是id x (如果類別筆記本電腦x為2) 。

有人可以幫助我了解在這種情況下如何加入此表嗎?

到目前為止,我試圖像這樣添加category_id= +:

SELECT a.id, a.category_name, b.query 
FROM category AS a
INNER JOIN seo_url AS b
ON a.category_id = 'category_id=' + b.query

PS我試過ON 'category_id=' + a.category_id

PSS也有product_id所以我不知道我是否可以使用LIKE但我正在考慮,搜索並找不到使它工作的方法。

謝謝! D:

將嵌套的REVERSE函數與+ 0一起使用可以自動“解析”整數。

詢問

SELECT
 REVERSE(REVERSE('category_id=2') + 0)
UNION ALL 
SELECT 
 REVERSE(REVERSE('category_id=21') + 0)

結果

| REVERSE(REVERSE('category_id=2') + 0) |
|---------------------------------------|
|                                     2 |
|                                    21 |

參見演示http://sqlfiddle.com/#!9/340e01/530

在查詢中使用它。

詢問

SELECT a.category_id, a.category_name, b.query 
FROM category AS a
INNER JOIN seo_url AS b
ON a.category_id = REVERSE(REVERSE(b.query) + 0)

結果

| category_id | category_name |         query |
|-------------|---------------|---------------|
|           1 |    Components | category_id=1 |
|           2 |       Laptops | category_id=2 |

參見演示http://sqlfiddle.com/#!9/ef5781/1

在MySQL中,使用可以附加字符串和數字的函數CONCAT(...) ,該函數與該數據庫的不同版本兼容。

您的固定查詢為:

SELECT a.id, a.category_name, b.query 
FROM category AS a
INNER JOIN seo_url AS b
ON CONCAT('category_id=', a.category_id) = b.query;

您的表seo_url在字段query的值中已經具有'category_id =',因此您無需附加它。

另外,我建議您使用更具代表性的名稱來命名表別名,而不要使用ab

希望這可以幫助您解決問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM