这很难解释,但我需要解释
- select id from customers
- foreach customer find the order with that id
-- foreach order (for that customer)
--- select product.name, product.max on order.productId=product.id
我不知道如何提取这些数据。我需要多个单独的选择?我可以写一个长的单个 sql 语句吗(';' 算作单独的 :P)。我如何从一行中拉出子行......
最佳答案
使用连接:
SELECT c.id, o.id, p.name, p.max
FROM Customers AS c
JOIN Orders AS o ON c.id = o.customer
JOIN Product AS p ON o.productID = p.id
更有可能的是,您有一个 Orders 表和一个 OrderItems 表 - 只需添加一个具有适当条件的额外级别的 JOIN。
请注意,我假设您的表是“Orders”以避免与关键字“ORDER”发生冲突。我没有假设您从 MAX 函数中消除了 Product.Max 的歧义。您可能不得不担心您的 DBMS 允许什么(有些可以容忍关键字的滥用;有些则不能)。
容忍(过度容忍)DBMS 是 IBM Informix Dynamic Server (IDS):
CREATE TABLE table(null INTEGER, integer CHAR(3), date DECIMAL(10,0), decimal DATE);
它有效——它很可怕。但是避免了很多后期添加关键词的问题。
关于php - 在一条语句中进行多项选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478334/