簡體   English   中英

PHP / MySQL-匹配2個表

[英]PHP / MySQL - Match against 2 tables

我正在使用一些結構不太友好的MySQL表。

目前,我有一個類似以下的查詢:

$query = 'SELECT textID, subject FROM articles 
 WHERE (UPPER(subject) LIKE "%'.$string.'%") AND status = "1" 
 ORDER BY CASE WHEN subject LIKE "'.$search.' %" THEN 0 
 WHEN creator LIKE "'.$search.'%" THEN 1 
 WHEN email LIKE "'.$search.'%" THEN 2 ELSE 3 END, 
 subject LIMIT 10';

然后,我顯然可以運行並得到如下結果:

    $res = $db->query($query);
    $result = array();

    while($results = $res->fetch_assoc()) {
    $result[] = $results;
    }

現在,我已經從數據庫中提取了數據,現在需要將其與第二個表中的數據進行匹配,以便我只能獲取/使用匹配的結果。

我現在想針對第二個表運行上述數組,特別是針對每個結果檢索的“ textID”,以僅使用與第二個表中的“ textID”匹配的數組結果。

例如:假設上面的查詢返回了以下內容(注意:這些結果將基於查詢中使用的“字符串”是動態的):

    Table: articles

    textID ----- Subject
    1       |     Test 
    4       |     Test 2
    25      |     Test 3
    33      |     Test 4
    51      |     Test 5

我想運行第二個查詢(或將其實現到原始查詢中),使其與共享相同textID的第二個表中的任何條目匹配“ textID”。

因此,如果第二個MySQL表具有以下匹配的textID:

    Table: altarticles

    textID 
    1
    25
    51

我想廢棄原始的“ $ result []”並創建一個僅包含匹配結果的新數組:

    textID ----- Subject
    1       |     Test 
    25      |     Test 3
    51      |     Test 5

人們將如何去做呢?

這應該通過使用JOIN子句輕松完成。 在TextID字段上JOIN altarticles 別名每個表articles aaltarticles aa然后SELECT aa.subject而不是原始表的主題。

常規JOIN也稱為內部聯接,這意味着僅顯示符合兩個表條件的行。

$query = '
    SELECT
        a.textID, 
        a.subject 
    FROM articles a
    JOIN altarticles aa ON (a.textID = aa.textID)
    WHERE 
        (UPPER(a.subject) LIKE "%'.$string.'%") 
        AND a.status = "1" 
        ORDER BY CASE 
            WHEN a.subject LIKE "'.$search.' %" THEN 0 
            WHEN a.creator LIKE "'.$search.'%" THEN 1 
            WHEN a.email LIKE "'.$search.'%" THEN 2 
            ELSE 3 END, a.subject 
        LIMIT 10
';

暫無
暫無

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

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