【问题标题】:Trying my first sql left join - isn't working尝试我的第一个 sql left join - 不工作
【发布时间】:2015-12-03 20:07:34
【问题描述】:


我正在尝试加入两个数据库表并将行提取到 php 变量中。但这是我的第一个连接函数,我没有将任何值返回到我的表单中。

SELECT    s.supplierid,
          s.name, 
          s.address, 
          s.zipCode, 
          s.cityName, 
          s.region, 
          s.country, 
          s.phone, 
          s.fax, 
          s.contactMame, 
          s.contactTitle, 
          s.contactPhone, 
          s.contactEmail, 
          s.notes, 
          s.employeeid, 
          e.employeeid as emp_id, 
          e.name as emp_name
FROM      suppliers s
LEFT JOIN employees e
ON        s.employeeid=e.employeeid
WHERE     supplierid=? limit 0,1
ORDER BY  name DESC
LIMIT     :from_record_num, :records_per_page"; 

然后我将它们分配给这样的变量

$name = $row['name'];
$address = $row['address'];
$emp_name = $row['emp_name'];

我需要在我的代码中再次使用它,但要从表中提取所有行。有没有办法使用

SELECT *

在左连接中?

【问题讨论】:

  • 你的问题不是很清楚。当你说“它并没有完全按照我想要的那样做”时,你是什么意思。 ?
  • 是的,您可以在左连接中使用SELECT *
  • 是的,您可以在包含 LEFT JOIN 的查询中使用 SELECT *。但是,如果两个表中存在相同的字段(例如“名称”),则必须小心。
  • 你是对的不是很清楚。我的 html 表单没有任何值。
  • 看来您在 sql 中有两个限制子句。此外,为避免出现问题,请在 where 子句中引用字段名称以及 order by 时使用别名。您也不能在 sql 中将占位符变量用于限制子句

标签: php mysql join


【解决方案1】:

试试这样的:- (假设分页变量$from_record_num$records_per_page

$sql="select   
  s.supplierid,
  s.name,
  s.address,
  s.zipcode,
  s.cityname,
  s.region,
  s.country,
  s.phone,
  s.fax,
  s.contactmame,
  s.contacttitle,
  s.contactphone,
  s.contactemail,
  s.notes,
  s.employeeid,
  e.employeeid as 'emp_id',
  e.name as 'emp_name'
    from suppliers s
    left join employees e on s.employeeid=e.employeeid
    where s.supplierid=?
    order by  s.name desc
    limit {$from_record_num}, {$records_per_page}";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多