簡體   English   中英

從具有數組的多個表進行MySQL查詢(PHP)

[英]MySQL query from multiple tables with an array (PHP)

我正在嘗試對我的站點實施日志記錄系統。 我可以輕松地將信息記錄到“ LOGS”表中,但我想以更“易於閱讀”的形式向用戶展示。

表LOGS包含諸如log_id, user_id, customer_id, event_id, timestamp等列。User_id指的是表用戶,我想從那里使用“用戶名”。 Customer_id指的是表客戶,我想從那里使用“ customername”列值。 Event_id引用事件表,我想從那里使用“ description”列值。 你明白了。

我想打印到網頁上的內容是這樣的:

User John edited customer Wal Mart at 12:25pm
User John viewed customer Burger King at 12:30pm

...。 John用戶在12:40 pm刪除了客戶Costco

因此,我想從“ LOGS”中查詢20行,並使用其他表中的相應值並將其呈現給用戶。 我可以進行基本查詢,但這有點麻煩,因為我只是在學習……

感謝您的回答。

編輯:對不起糟糕的布局:(

這是基本的SQL概念和語法。

在此MySql手冊頁上查看員工姓名和工資: JOIN語法

select
  log_id, 
  customer_name, 
  user_name
from
  logs
  inner join customers on customers.customer_id = logs.customer_id
  inner join users on users.user_id = logs.user_id

使用join sql命令:

SELECT a.*, b.username,c.customername,d.description
FROM logs a
INNER JOIN customers b
ON a.user_id=b.username
INNER JOIN events c
ON a.event_id=c.customerID
WHERE a.user_id = '$userID'

這樣的事情。 但是對於完整查詢,我需要有關您想要獲得的內容以及表的外觀的更多信息。

您需要JOIN兩個表。 這是一個例子:

SELECT 
    `logs`.*, 
    `users`.`username`, 
    `events`.`description`, 
    `customers`.`customername` 
FROM 
    `logs`
JOIN 
    `users` 
    ON `users`.`id` = `logs`.`user_id`
JOIN 
    `events` 
    ON `events`.`id` = `logs`.`event_id`
JOIN 
    `customers` 
    ON `customers`.`id` = `logs`.`customer_id`
LIMIT 10

這將加入logsuserseventscustomers並獲取10個結果。 如果要按時間戳或其他方式訂購,也可以添加ORDER BY


我傾向於在列名和表名周圍使用反引號`來避免保留字的問題。 我發現這是一個堅持自己的好習慣。 http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

因此,您正在遵循最好的學習方法:練習,搜索,...恭喜。

您的要求可以通過表JOIN來實現。 例:

SELECT u.username, c.customername, e.description, l.timestamp
FROM   logs AS l #Using aliases to avoid long names
JOIN   users AS u ON l.user_id = u.id #The JOIN condition : basically, foreign 
                                      #key equal to foreign table primary key
JOIN   customers AS c ON l.customer_id = c.id
JOIN   events AS e ON l.event_id = e.id
#YOUR ORDER Clause
LIMIT 20

請注意,如果任何外鍵字段是可選的(可以為NULL),則應使用LEFT JOINRIGHT JOIN系列。 在這種情況下,“外部字段”將具有NULL值。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM