我有一个名为Listings
的表和一个名为wines
的表,另一个名为wineinfo
我最初使用以下内容仅从listings
表中获取信息,但自从我重新构建数据库以来,它需要使用另外两个表。
$listing = $this->db->get_where( "listings", [ "listingID" => $id ]
)->row();
if( !$listing )
throw new Exception("Error: Listing you're trying to bid on does not exist.", 1);
// check not to bid on own listings
if( $listing->list_uID == $userid )
throw new Exception("Error: Dont't bid on your own listings.", 1);
然后我尝试更改代码,以便JOIN语句可以正常工作
$this->db->select("FROM listings.*, Vintage, Vineyard, Wine_Name, Region, Advice, Grape,Producer,Type id,wine_id,Wine_Name,");
$this->db->from("wineinfo");
$this->db->where(["listingsID" => $id]);
$this->db->where(["wineinfo.wine_id" => "listings.wine_id"]);
$this->db->where(["wineinfo.Vintage" => "listings.wine_id"]);
$this->db->join("wines", "wineinfo.wine_id = wines.wine_id");
$listing = $this->db->get()->row();
我收到了这个错误。
Unknown table 'listings'
但是100%的表名为listing。
我知道我错过了一些东西,或者肯定搞砸了代码,我只是刚刚学习了这个,上面的代码也适用于别的东西,但现在我已经修改了它,它没有& #39;吨
答案 0 :(得分:1)
然后我尝试更改代码,以便JOIN语句可以正常工作
您正在尝试将3个表与2个FROM
和一个JOIN
子句合并,这与您的方式不一致。
您需要保持SELECT
清洁,只需选择所需的列,例如:
$this->db->select("listings.*, wineinfo.*, wine.*");
然后是FROM
子句:
$this->db->from("wineinfo");
然后进行连接:
$this->db->join("listings", "wineinfo.wine_id = listings.listingsID");
$this->db->join("wines", "wineinfo.wine_id = wines.wine_id");
然后是你的where子句。
请注意,我不知道您的表格结构,因此我只能猜测您的JOIN
关系。这也是一个简化的例子,我认为3个表没有匹配的列名。
对“含糊不清”评论的回复:您可以将您的select子句限制为只需要的列,例如
$this->db->select("listings.*, wineinfo.vintage, wine.*");
或使用别名:
$this->db->select("listings.*, wineinfo.wine_id as my_wineID, wine.*");
答案 1 :(得分:0)
$this->db->select("FROM listings.*, Vintage, Vineyard, Wine_Name, Region, Advice, Grape,Producer,Type id,wine_id,Wine_Name,");
中的FROM不应该在那里。
生成的查询现在看起来像:
SELECT FROM *... FROM sometable