DBに2つのテーブルがあります(table_1
とtable_2
)、それぞれにName
という相互の列があります。この場合のUNIONの使用方法(MySQL)
私は現在、唯一のtable_1
から(status
、Name
)いくつかのデータをインポートするには、次のコードを使用しています:
/* database section start */
$mysqli = new mysqli("z","z","z","z");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* database section end */
// Choose Relevant items, and turn them into an array
$item_array = array(
'item1',
'item2',
'item3'
);
//implode items, turn into string
$item_implode = join("','", $item_array);
//declare an overall array for result
$product = array();
$result = $mysqli->query("SELECT Name, Status as status from table_1 where Name IN ('$item_implode') ORDER BY FIELD (Name, '$item_implode');");
while($row = $result->fetch_assoc()) {
$product_name = $row['Name'];
// find all keys in $item_array which value is the products
$keys = array_keys($item_array, $product_name);
foreach ($keys as $key) {
// add values for these keys
$product[$key + 1]["Name"] = $row['Name'];
$product[$key + 1]["status"] = $row['status'];//
}
}
私もtable_2
からデータをインポートしたい場合、私は、このコードに何を追加する必要があります(たとえば、 、color
,date_added
という列)?
$product[$x]["Name"]
$product[$x]["status"]
$product[$x]["color"]
$product[$x]["date_added"]
EDIT:
長いスレッドが私の質問に答えていないこと
私の目的は、これらのキーを持つことです。コードは私が使用しているコードと似ていないので、この具体的なケースではUNIONを正確に適用する方法を知りたいと思います。
私が使用して試してみた:
$result = $mysqli->query
("(SELECT Name, status as status from table_1)
UNION
(SELECT Name, color as color from table_2)
where Name IN ('$item_implode') ORDER BY FIELD (Name, '$item_implode');");
while($row = $result->fetch_assoc()) {
をしかし、私は最後の行に致命的なエラーが発生します。
EDIT2:
まだ取得エラー:
$result = $mysqli->query
("(SELECT Name, status as statu table_1 where Name IN ('$item_implode') ORDER BY FIELD (Name, '$item_implode'))
UNION (SELECT color from table_2 where Name IN ('$item_implode') ORDER BY FIELD (Name, '$item_implode'));");
while($row = $result->fetch_assoc()) {
使用 'UNION'(http://dev.mysql.com/doc/refman/5.7/en/union.html) – rokas