簡體   English   中英

MySQL PHP-選擇哪里ID = multiDimensionArray

[英]MySQL PHP - SELECT WHERE id = multidimensionalArray

我在MySQL中有2個表:

預期的表格匹配項:

id | idA | idB

1  | 21  | 1
2  | 21  | 2
3  | 22  | 3
4  | 8   | 2
5  | 9   | 21
6  | 10  | 7

表格數據:

id | projectId | name
1  |    2      | Chicken
2  |    2      | Pork
3  |    2      | Fish
...
21  |   11     | Potato
22  |   11     | Carrot
23  |   11     | Chili

例如,基於表匹配,我想在idA僅等於projectId 11的行中獲取idA和idB的名稱。

我在CodeIgniter中構建了它,我已經成功獲取了foreach idA name ,但是仍然無法獲得idB name。

我希望我的視圖是這樣的(以projectId = 11為例):

name A  | nameB
potato  | chicken
potato  | Pork
carrot  | Fish

但是,現在我得到了

name A  | nameB
potato  | chicken
potato  | 
carrot  | 

這是我的代碼

模型:

function get_projectA() {
    $project_id = $this->uri->segment(4, 0);
    $this->db->select('*');    
    $this->db->from('matches');
    $this->db->join('data', 'matches.idA = data.id');
    $this->db->where('projectID', $project_id); 
    $query = $this->db->get();
    return $query->result();       
}

function get_projectB() {
    $project_id = $this->uri->segment(4, 0);
    $this->db->select('idB');    
    $this->db->from('matches');
    $this->db->join('image', 'matches.idA = data.id');
    $this->db->where('projectID', $project_id); 
    $query = $this->db->get(); 
    $a = $query->result_array();
    foreach ($query->result_array() as $row)
    {
        $c = $row['idB'];
        $query2=$this->db->query("SELECT * FROM data where id='$c'"); 
        $aaa = $query2->result_array();
        echo '<pre>';
        print_r($aaa);
    }       
}

視圖:

<tbody id="test">
        <?php
            foreach($get_projectA as $projectA) {
                foreach($get_projectB as $projectB) {
        ?>
            <tr>
                <td>
                    <p><?php echo $projectA->name; ?></p>
                </td>
                <td>
                    <p><?php echo $projectB['name']; ?></p>
                </td>
                <td>
                    <p>3</p>
                </td>
                <td>
                    <p>4</p>
                </td>
            </tr> 
         <?php } } ?>   
        </tbody> 

我不知道projectid與該查詢有什么關系。 但是,以下SQL似乎會返回您要查找的內容:

select tA.name, tB.name
from Expected e join
     Table tA
     on e.idA = tA.id join
     Table tB
     on e.idB = tB.id

實際上,這將返回所有六行。 下面將限制為“項目11”:

select tA.name, tB.name
from Expected e join
     Table tA
     on e.idA = tA.id join
     Table tB
     on e.idB = tB.id and tB.projectid = 11

暫無
暫無

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

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