您在這裡

query裡面的n是什麼意思

hanamizuki's 的頭像
hanamizuki 在 2008-10-23 (四) 17:51 發表

今天在讀databases這一章,他有些範例但沒說清楚所有東西,所以想問一下。

就是,

$sql = "SELECT * FROM {node} n WHERE type = %s AND status = %d ORDER BY n.create DESC";

像這樣的東西,就是要從node資料表裡面找出type是某%s,且status是某%d的資料,然後以node的create這個欄位來排序。

不過,為何{node}後面有個小n呢?還有,create前面的n.又是什麼意思?

SQL 標準語法是:
SELECT * FROM node n <--- n是node的代名詞
所以以後就不需要 node.created,而用n.created
{大括弧}是為了讓db_prefix使用
標準的SQL語法沒有喔

--
from open mind to open source~

--
from open mind to open source~

以 db_query('SELECT * FROM {node} n WHERE type = %s AND status = %d ORDER BY n.create DESC', 'page', 1) 來說
實際上的 sql 會變成
SELECT * FROM node AS n WHERE type = 'page' AND status = 1 ORDER BY n.create DESC

FROM node AS n 表示是在 node 資料表 然後取一個別名 n
所以後面的 ORDER BY n.create 其實就是 ORDER BY node.create

這部份是屬於 SQL 語法的
databases 這一章是假設讀者已經具備基礎 SQL 語法的能力
所以並不會詳細說明 SQL 語法使用的基礎部分