簡體   English   中英

在一個查詢中從多個表中選擇記錄

[英]Select records from multiple tables in one query

我有4個彼此不相關的表。 我想使用一個查詢而不是4個查詢從這些表中獲取很少的記錄。

目前,這是通過4個查詢完成的。 碼:

<?php

$result1 = $mysqli->query("SELECT val1, val2 FROM `table1` WHERE id='1'") or die(mysqli_error());
    $row1 = mysqli_fetch_array($result1, MYSQLI_ASSOC);
    $val1 = $row1['val1'];
    $val2 = $row1['val2'];

$result2 = $mysqli->query("SELECT val3, val4 FROM `table2` WHERE id='2'") or die(mysqli_error());
    $row2 = mysqli_fetch_array($result2, MYSQLI_ASSOC);
    $val3 = $row2['val3'];
    $val4 = $row2['val4'];  

$result3 = $mysqli->query("SELECT val5, val6 FROM `table3` WHERE id='3'") or die(mysqli_error());
    $row3 = mysqli_fetch_array($result3, MYSQLI_ASSOC);
    $val5 = $row3['val5'];
    $val6 = $row3['val6'];  

$result4 = $mysqli->query("SELECT val7, val8 FROM `table4` WHERE id='4'") or die(mysqli_error());
    $row4 = mysqli_fetch_array($result4, MYSQLI_ASSOC);
    $val7 = $row4['val7'];
    $val8 = $row4['val8'];

?>

和我在一次查詢中失敗的方法。 碼:

<?php
$resultglobal = $mysqli->query("
SELECT
tab1.val1 AS val1,
tab1.val2 AS val2,
tab2.val3 AS Val3,
tab2.val4 AS val4,
tab3.val5 AS val5,
tab3.val6 AS val6,
tab4.val7 AS val7,
tab4.val8 AS val8

FROM 

table1 as tab1, 
table2 as tab2,
table3 as tab3,    
table4 as tab4

WHERE 

tab1.id='1', 
tab2.id='2', 
tab3.id='3', 
tab4.id='4' 
") or die(mysqli_error());

$rowg = mysqli_fetch_array($resultglobal, MYSQLI_ASSOC);
$val1 = $rowg['val1'];
$val2 = $rowg['val2']; 
$val3 = $rowg['val3'];
$val4 = $rowg['val4'];
$val5 = $rowg['val5'];
$val6 = $rowg['val6']; 
$val7 = $rowg['val7'];
$val8 = $rowg['val8'];   
?>

怎么了? 這里有什么解決方案? 任何建議高度贊賞。 提前非常感謝您。

你只需要更換,AND你在WHERE子句。 像這樣:

WHERE
tab1.id='1' AND 
tab2.id='2' AND
... 

只要ID是唯一的(例如主鍵),它就可以正常工作。 這是一個隱式的CROSS JOIN。

您可以通過以下方式進行多次查詢:

$statement = "SELECT val1, val2 FROM `table1` WHERE id='1';";
$statement .= "SELECT val3, val4 FROM `table2` WHERE id='2';";
$statement .= "SELECT val5, val6 FROM `table3` WHERE id='3';";
$statement .= "SELECT val7, val8 FROM `table4` WHERE id='4'";

$values = $mysqli -> multi_query($statement) or die ('Error: '.$mysqli -> error);

while ($row = $values -> fetch_assoc()) {

    $val1 = $row['val1'];
    $val2 = $row['val2'];
    $val3 = $row['val3'];
    $val4 = $row['val4'];
    $val5 = $row['val5'];
    $val6 = $row['val6'];
    $val7 = $row['val7'];
    $val8 = $row['val8'];

}

暫無
暫無

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

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