我正在学习我的第一个数据库类,需要一些关于我需要更改脚本来处理的信息。目前我有2个表,一个“订单”表和一个“客户”表,这就是它们的编码方式。
CREATE TABLE customers (
customer_id INT ,
customer_first_name VARCHAR(20),
customer_last_name VARCHAR(20) NOT NULL,
customer_address VARCHAR(50) NOT NULL,
customer_city VARCHAR(20) NOT NULL,
customer_state CHAR(2) NOT NULL,
customer_zip CHAR(5) NOT NULL,
customer_phone CHAR(10) NOT NULL,
customer_fax CHAR(10),
CONSTRAINT customers_pk
PRIMARY KEY (customer_id)
);
CREATE TABLE order (
order_id INT NOT NULL,
customer_id INT NOT NULL,
order_date DATE NOT NULL,
shipped_date DATE,
employee_id INT,
CONSTRAINT orders_pk
PRIMARY KEY (order_id),
CONSTRAINT orders_fk_customers
FOREIGN KEY (customer_id) REFERENCES customers (customer_id),
CONSTRAINT orders_fk_employees
FOREIGN KEY (employee_id) REFERENCES employees (employee_id)
);
将这两个表连接在一起的脚本如下:
SELECT or.order_id, or.order_date, or.customer_city,
cu.customer_first_name, cu.customer_last_name
FROM orders or INNER JOIN customers cu
ON or.customer_first_name = cu.customer_first_name
AND or.customer_last_name = cu.customer_last_name;
现在显然,我知道这是不正确的,可能有多个错误,所以要温和。我很想知道我能做些什么才能让它发挥作用。请指教。
答案 0 :(得分:4)
两件事:
请勿使用namespace Illuminate\Contracts\Validation;
interface Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value);
/**
* Get the validation error message.
*
* @return string
*/
public function message();
}
作为别名。这是一个保留的词。
通过外键加入。
查询应如下所示:
or
答案 1 :(得分:2)
您可以在ID号码上加入您的表格,并且您不必担心当多个人具有相同名称时会发生什么。
请改用:
FROM orders ord INNER JOIN customers cu
ON ord.order_id = cu.customer_id
您的select语句可以保持原样。我也根据Error_2646的评论重新别名。
在可能的情况下,使用作为其中一个表中主键的字段也比使用非键字段更好。