SELECT和WHERE里面,遇到多表都有的名字,一定要使用表名以區別,電腦才知道你的命令,才能正確執行。
創新互聯公司專注于寧夏企業網站建設,響應式網站開發,商城網站定制開發。寧夏網站建設公司,為寧夏等地區提供建站服務。全流程按需求定制制作,專業設計,全程項目跟蹤,創新互聯公司專業和態度為您提供的服務
當SELECT后面的名字不重復的時候,多表都有的列但是只選了一份,在GROUP和ORDER里面可以不用加表名,計算機能夠推斷是哪個。
比如你有兩個表 ?pre_first ?pre_second 并且你數據庫配置文件已經配置了表前綴那么你可以這么寫
$First=new?\Think\Model("First");
//聯表查詢條件
$arrJoin=array(
"__SECOND__?as?s?on?f.id=s.id?",?
);
$list=$First-alias('f')-join($arrJoin,'LEFT')-select();
沒有區別吧,如果表名過長,起別名可以簡化sql語句,如果涉及一個表,就不用,在性能方面的影響微乎其微啊。
查詢優化器首先先執行from子句,碰到表名有別名就直接使用了,而后面不是每次都解析的。
但是自身連接時必須使用兩個別名。
thinkphp的關聯模型,就是簡化你的jion操作。所以,本質上,關聯模型,就是處理表連接關系的。歸根結底的,就是讓你在用模型操作的時候,簡化SQL查詢的join操作。(是簡化操作,而不是改變SQL語句。)
先舉個例子。一個用戶表,一個文章表。一個用戶對應多篇文章。然后,你現在會經常出現如下需求:取得某人的文章記錄,但是呢,只要求顯示,用戶名,文章名,文章ID,文章日期(其他的,比如,什么用戶郵箱啊,用戶密碼啊,文章類型啊,文章修改日期啊,文章標簽啊,你都不需要)這個時候,你就可以定義一個試圖模型,然后在?$viewFields?里面,就可以把你經常使用需要調用的那個幾個字段,按照thinkphp的規定,定義進去。
如下參考
class?ArticleViewModel?extends?ViewModel?{
public?$viewFields?=?array(
'Article'=array('name','title'....其他字段),
'Author'=array('title'='category_name',?'_on'='article.auid=author.id'),
'Article_class'=array(字段定義如上,具體規則,下面有介紹,?'_on'=上面已經給你寫了一個,這里其實就是寫,article,和article_class?的主外鍵,對應關系。即JOIN?....ON..語句,ON部分的多內容),
'article_type'=array('field_realename'='field_alias'。這里就相當于查詢語句SELECT?字段??字段的別名。這樣的對應關系。)?
);
}
分享文章:php為數據表定義別名 有效的php變量名
URL標題:http://m.newbst.com/article34/hjpdpe.html
成都網站建設公司_創新互聯,為您提供網站收錄、網站營銷、服務器托管、App開發、虛擬主機、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯