[英]Mysql reducing number of queries
我在table1中有3列:帳簿,鍵和值。
| book | key | value |
------------------------------
| 1 | author | a |
| 1 | editor | b |
| 1 | book | c |
而不是運行三個查詢
$data = mysql_query("
SELECT * FROM table1 WHERE book = '1' AND key = 'author'
") or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
$value1 = $info['value'];
}
然后為編輯器和書籍重復此操作。
$ value1 $ value2 $ value3插入頁面上的不同位置
我可以用一個查詢做到這一點嗎?
是。 如果沒有“ book = 1”的其他條目,則只需查詢
SELECT * FROM table1 WHERE book = '1'
如果還有更多條目,則可以使用以下查詢:
SELECT * FROM table1 WHERE book = '1' AND key IN('author','editor','book')
然后創建一個assoc數組:
while($info = mysqli_fetch_assoc( $data ))
{
$value[$info['key']] = $info['value'];
}
...
echo "the book {$value['book']} was written by {$value['author']}";
為了創建一個$ value數組,您必須使用this:
$value[] = $info['value'];
代替這個:
$value1 = $info['value'];
您也可以使用此代碼:
$value[]["key"] = $info['key'];
$value[]["value"] = $info['value'];
例如,您可以使用$value[0]["value"]
調用第一行的值
如果您希望單個記錄中的值,請嘗試以下操作:
SELECT `t1`.`value` AS `value1`, `t2`.`value` AS `value2`, `t3`.`value` AS `value3`
FROM
`table1` AS `t1` CROSS JOIN
`table1` AS `t2` CROSS JOIN
`table1` AS `t3`
WHERE
(`t1`.`book` = 1) AND (`t1`.`key` = 'author')
AND (`t2`.`book` = 1) AND (`t2`.`key` = 'editor')
AND (`t3`.`book` = 1) AND (`t3`.`key` = 'book');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.