显示内部联接数据,其中DATE_FORMAT数据尚未工作


Displaying INNER JOIN-ed data with DATE_FORMAT-ted data not yet working

我正在为客户开发一个工单系统。数据是通过管理面板输入的,例如 ClientCategoryDescription 。数据库设置为记录UpdatedCreated信息。

最初,输入Category(VARCHAR数据库表(,当查询数据库时,所有信息都将正确显示在主页上。

查询:

$sql = 'SELECT *,
    DATE_FORMAT(wo_updated,"%m/%d/%Y") AS updated,
    DATE_FORMAT(wo_created, "%m/%d/%Y") AS created
    FROM work_orders
    ORDER BY wo_id ASC';
$result = $conn->query($sql) or die(mysqli_error($conn));
$numRows = $result->num_rows;

这很完美,显示ClientDescriptionCategory以及UpdatedCreated信息,例如,这两个信息显示为10/07/2013

然后,我在管理面板中添加了一个部分,允许在数据库中输入和存储类别,以便在输入新的工作订单时,您可以从预设的类别列表中进行选择,以使事情看起来流畅一致。

这是没有DATE_FORMAT代码的新查询:

$sql = 'SELECT *, cat_name
    FROM work_orders INNER JOIN categories
    ON work_orders.wo_category = categories.cat_id
    ORDER BY wo_id ASC';
$result = $conn->query($sql) or die(mysqli_error($conn));
$numRows = $result->num_rows;

这非常有效,显示ClientDescriptionCategory(Category现在从现在INTcategories DB 表中调用(。

但正如您会注意到的,我在第二个查询中没有 DATE_FORMAT -ted 代码,因为我每次尝试将两者结合起来都以语法错误告终。我可以执行其中之一,但尚不能将显示 -ted Updated DATE_FORMATCreated work_orders表中的信息与categories表中的cat_name信息相结合的两个查询。

我已经尝试了子查询和对各种JOIN命令的各种尝试,但到目前为止,我仍然无法克服MySQLi语法错误。显然,这里有一些我需要学习的东西,经过几个小时的反复试验,除了大量的研究,我被困住了。任何帮助解决这个问题,可能很简单,将不胜感激。谢谢!

更新:

这是我尝试的导致语法错误的一种方法:

$sql = 'SELECT *, cat_name
    DATE_FORMAT(wo_updated,"%m/%d/%Y") AS updated,
    DATE_FORMAT(wo_created, "%m/%d/%Y") AS created
    FROM work_orders INNER JOIN categories
    ON work_orders.wo_category = categories.cat_id
    ORDER BY wo_id ASC';
$result = $conn->query($sql) or die(mysqli_error($conn));
$numRows = $result->num_rows;

进一步更新:

我希望我能说失踪的逗号

以前没有咬过我,失踪的逗号是罪魁祸首!谢谢@SergeyRonin,@denlau,@JMS786,逗号没问题。也感谢您的代码建议,我不知道该把正确答案归功于谁,因为你们都有。

SELECT 
    wo.*, 
    c.cat_name,
    DATE_FORMAT(wo.`wo_updated`,"%m/%d/%Y") AS updated,
    DATE_FORMAT(wo.`wo_created`, "%m/%d/%Y") AS created
FROM work_orders wo
INNER JOIN categories c ON wo.`wo_category` = c.`cat_id`
ORDER BY wo.`wo_id` ASC

此外,在您的代码中,您在cat_name后错过了逗号,所以这可能是您出现错误的原因。

您在

第一行的"cat_name"之后缺少逗号。您的查询应如下所示:

    SELECT 
        w.wo_updated as wo_updated,
        w.wo_created as wo_updated,
        c.cat_name as cat_name,
        DATE_FORMAT(w.wo_updated,"%m/%d/%Y") AS updated,
        DATE_FORMAT(w.wo_created, "%m/%d/%Y") AS created
    FROM 
        work_orders w
    INNER JOIN 
        categories c
        ON 
            w.wo_category = c.cat_id
    ORDER BY 
        w.wo_id ASC

好吧,我给表格起了一些较短的名字 - 如果你想使用它,你的电话。此外,我显式调用字段,我需要在我的 SELECT 语句中。这是由于这样的想法,即您应该只获得所需的确切信息。:)

希望这有帮助。

您错过了 cat_name 和 DATE_FORMAT 之间的逗号 ","...