【问题标题】:MySQL: Join Statements: Why doesn't this work?MySQL:加入语句:为什么这不起作用?
【发布时间】:2023-12-22 08:25:02
【问题描述】:

嗯,我正在处理一项任务,我们正在使用 JOIN ... ON 语句,我不确定我做错了什么,但是当我将我的 SQL 代码运行到数据库中时,什么也没有出现.

编辑: 没有收到任何错误。代码运行无缺陷。

有人知道我做错了什么吗?对于这种情况,INNER JOIN 是正确的连接方式吗? (join语句可以在代码末尾找到...)

 SELECT orders.order_ID as 'Order ID'
      , orders.order_date as 'Order Date'
  , CONCAT(customers.customer_first_name, ' ', customers.customer_last_name) as 'Customer'
   , customers.customer_city as 'City'
FROM Orders
JOIN Customers
  ON orders.customer_ID = customers.customer_ID
 WHERE customer.customer_state = 'OH'
 ORDER BY orders

所有的 SQL ...

/* Sierra McGivney - Lab5 - Additions */

/*Drop Tables*/
DROP TABLE IF EXISTS customers;
DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS order_details;
DROP TABLE IF EXISTS items;
DROP TABLE IF EXISTS artists;
DROP TABLE IF EXISTS employees;

/*create tables*/
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 artists
(
 artist_id      INT       NOT NULL,
 artist_name  VARCHAR(30),
 CONSTRAINT artist_pk 
 PRIMARY KEY (artist_id)
);

CREATE TABLE items
(
 item_id    INT       NOT NULL,
 title     VARCHAR(50)   NOT NULL,
 artist_id   INT   NOT NULL,
 unit_price  DECIMAL(9,2)  NOT NULL,
 CONSTRAINT items_pk 
  PRIMARY KEY (item_id),
 CONSTRAINT items_fk_artists
  FOREIGN KEY (artist_id) REFERENCES artists (artist_id)
);

CREATE TABLE employees
(
 employee_id     INT        NOT NULL,
 last_name      VARCHAR(20)    NOT NULL,
 first_name     VARCHAR(20)    NOT NULL,
  manager_id     INT,
CONSTRAINT employees_pk 
 PRIMARY KEY (employee_id),
CONSTRAINT emp_fk_mgr FOREIGN KEY (manager_id) REFERENCES employees(employee_id) 
);

CREATE TABLE orders
(
 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)
);

CREATE TABLE order_details
(
 order_id   INT      NOT NULL,
 item_id    INT      NOT NULL,
 order_qty   INT      NOT NULL,
 CONSTRAINT order_details_pk 
  PRIMARY KEY (order_id, item_id),
 CONSTRAINT order_details_fk_orders
  FOREIGN KEY (order_id)
  REFERENCES orders (order_id),
 CONSTRAINT order_details_fk_items
  FOREIGN KEY (item_id)
  REFERENCES items (item_id)
);

/*insert rows into tables*/
INSERT INTO customers VALUES 
(1,'Korah','Blanca','1555 W Lane Ave','Columbus','OH','43221','6145554435','6145553928'),
(2,'Yash','Randall','11 E Rancho Madera Rd','Madison','WI','53707','2095551205','2095552262'),
(3,'Johnathon','Millerton','60 Madison Ave','New York','NY','10010','2125554800',NULL),
(4,'Mikayla','Davis','2021 K Street Nw','Washington','DC','20006','2025555561',NULL),
(5,'Kendall','Mayte','4775 E Miami River Rd','Cleves','OH','45002','5135553043',NULL),
(6,'Kaitlin','Hostlery','3250 Spring Grove Ave','Cincinnati','OH','45225','8005551957','8005552826'),
(7,'Derek','Chaddick','9022 E Merchant Wy','Fairfield','IA','52556','5155556130',NULL),
(8,'Deborah','Davis','415 E Olive Ave','Fresno','CA','93728','5595558060',NULL),
(9,'Karina','Lacy','882 W Easton Wy','Los Angeles','CA','90084','8005557000',NULL),
(10,'Kurt','Nickalus','28210N Avenue Stanford','Valencia','CA','91355','8055550584','055556689'),
(11,'Kelsey','Eulalia','7833 N Ridge Rd','Sacramento','CA','95887','2095557500','2095551302'),
(12,'Anders','Rohansen','12345 E 67th Ave NW','Takoma Park','MD','24512','3385556772',NULL),
(13,'Thalia','Neftaly','2508 W Shaw Ave','Fresno','CA','93711','5595556245',NULL),
(14,'Gonzalo','Keeton','12 Daniel Road','Fairfield','NJ','07004','2015559742',NULL),
(15,'Ania','Irvin','1099 N Farcourt St','Orange','CA','92807','7145559000',NULL),
(16,'Dakota','Baylee','1033 NSycamore Ave.','Los Angeles','CA','90038','2135554322',NULL),
(17,'Samuel','Jacobsen','3433 E Widget Ave','Palo Alto','CA','92711','4155553434',NULL),
(18,'Justin','Javen','828 S Broadway','Tarrytown','NY','10591','8005550037',NULL),
(19,'Kyle','Marissa','789 E Mercy Ave','Phoenix','AZ','85038','9475553900',NULL),
(20,'Erick','Kaleigh','Five Lakepointe Plaza, Ste 500','Charlotte','NC','28217','7045553500',NULL),
(21,'Marvin','Quintin','2677 Industrial Circle Dr','Columbus','OH','43260','6145558600','6145557580'),
(22,'Rashad','Hol*e','3467 W Shaw Ave #103','Fresno','CA','93711','5595558625','5595558495'),
(23,'Trisha','Anum','627 Aviation Way','Manhatttan Beach','CA','90266','3105552732',NULL),
(24,'Julian','Carson','372 San Quentin','San Francisco','CA','94161','6175550700',NULL),
(25,'Kirsten','Story','2401 Wisconsin Ave NW','Washington','DC','20559','2065559115',NULL);

INSERT INTO artists(artist_id,artist_name) VALUES 
(10,'Umani'),
(11,'The Ubernerds'),
(12,'No Rest For The Weary'),
(13,'Burt Ruggles'),
(14,'Sewed the Vest Pocket'),
(15,'Jess & Odie'),
(16,'Onn & Onn');

INSERT INTO items (item_id,title,artist_id,unit_price) VALUES 
(1,'Umami In Concert',10,17.95),
(2,'Race Car Sounds',11,13),
(3,'No Rest For The Weary',12,16.95),
(4,'More Songs About Structures and Comestibles',12,17.95),
(5,'On The Road With Burt Ruggles',13,17.5),
(6,'No Fixed Address',14,16.95),
(7,'Rude Noises',15,13),
(8,'Burt Ruggles: An Intimate Portrait',13,17.95),
(9,'Zone Out With Umami',10,16.95),
(10,'Etcetera',16,17);

INSERT INTO employees VALUES 
(1,'Smith','Cindy',null),
(2,'Jones','Elmer',1),
(3,'Simonian','Ralph',2),
(9,'Locario','Paulo',1),
(8,'Leary','Rhea',9),
(4,'Hernandez','Olivia',9),
(5,'Aaronsen','Robert',4),
(6,'Watson','Denise',8),
(7,'Hardy','Thomas',2);

INSERT INTO orders VALUES
(19,1,'2012-10-23','2012-10-28',6),
(29,8,'2012-11-05','2012-11-11',6),
(32,11,'2012-11-10','2012-11-13',NULL),
(45,2,'2012-11-25','2012-11-30',NULL),
(70,10,'2012-12-28','2013-01-07',5),
(89,22,'2013-01-20','2013-01-22',7),
(97,20,'2013-01-29','2013-02-02',5),
(118,3,'2013-02-24','2013-02-28',7),
(144,17,'2013-03-21','2013-03-29',NULL),
(158,9,'2013-04-04','2013-04-20',NULL),
(165,14,'2013-04-11','2013-04-13',NULL),
(180,24,'2013-04-25','2013-05-30',NULL),
(231,15,'2013-06-14','2013-06-22',NULL),
(242,23,'2013-06-24','2013-07-06',3),
(264,9,'2013-07-15','2013-07-18',6),
(298,18,'2013-08-18','2013-09-22',3),
(321,2,'2013-09-09','2013-10-05',6),
(381,7,'2013-11-08','2013-11-16',7),
(413,17,'2013-12-05','2014-01-11',7),
(442,5,'2013-12-28','2014-01-03',5),
(479,1,'2014-01-30','2014-03-03',3),
(491,16,'2014-02-08','2014-02-14',5),
(523,3,'2014-03-07','2014-03-15',3),
(548,2,'2014-03-22','2014-04-18',NULL),
(550,17,'2014-03-23','2014-04-03',NULL),
(601,16,'2014-04-21','2014-04-27',NULL),
(607,20,'2014-04-25','2014-05-04',NULL),
(624,2,'2014-05-04','2014-05-09',NULL),
(627,17,'2014-05-05','2014-05-10',NULL),
(630,20,'2014-05-08','2014-05-18',7),
(651,12,'2014-05-19','2014-06-02',7),
(658,12,'2014-05-23','2014-06-02',7),
(687,17,'2014-06-05','2014-06-08',NULL),
(693,9,'2014-06-07','2014-06-19',NULL),
(703,19,'2014-06-12','2014-06-19',7),
(778,13,'2014-07-12','2014-07-21',7),
(796,17,'2014-07-19','2014-07-26',5),
(800,19,'2014-07-21','2014-07-28',NULL),
(802,2,'2014-07-21','2014-07-31',NULL),
(824,1,'2014-08-01',NULL,NULL),
(827,18,'2014-08-02',NULL,NULL),
(829,9,'2014-08-02',NULL,NULL);

INSERT INTO order_details VALUES 
(381,1,1),
(601,9,1),
(442,1,1),
(523,9,1),
(630,5,1),
(778,1,1),
(693,10,1),
(118,1,1),
(264,7,1),
(607,10,1),
(624,7,1),
(658,1,1),
(800,5,1),
(158,3,1),
(321,10,1),
(687,6,1),
(827,6,1),
(144,3,1),
(479,1,2),
(630,6,2),
(796,5,1),
(97,4,1),
(601,5,1),
(800,1,1),
(29,10,1),
(70,1,1),
(165,4,1),
(180,4,1),
(231,10,1),
(413,10,1),
(491,6,1),
(607,3,1),
(651,3,1),
(703,4,1),
(802,3,1),
(824,7,2),
(829,1,1),
(550,4,1),
(796,7,1),
(693,6,1),
(29,3,1),
(32,7,1),
(242,1,1),
(298,1,1),
(479,4,1),
(548,9,1),
(627,9,1),
(778,3,1),
(19,5,1),
(89,4,1),
(242,6,1),
(264,4,1),
(550,1,1),
(693,7,3),
(824,3,1),
(829,5,1),
(829,9,1);

/*Exercise One*/
SELECT customer_last_name as 'Last Name', customer_first_name as 'First Name', customer_phone as 'Phone'
FROM customers
ORDER BY customer_last_name, customer_first_name, customer_phone;

/*Exercise Two*/
SELECT 
    CONCAT(customer_first_name, ' ' , customer_last_name) as 'Customer', customer_phone as 'Phone'
FROM customers
WHERE customer_state IN ('NY','NJ','DC')
ORDER BY customer_phone;

/*Exercise Three*/
SELECT DISTINCT customer_city as 'Cities'
FROM customers
ORDER BY customer_city DESC;

/*Exercise Four*/
SELECT title as "Title", unit_price as 'Original', ROUND((unit_price - (unit_price * .25)), 2) as "Sale"
FROM items
ORDER BY unit_price ASC;

/*Exercise Five*/
SELECT 
    CONCAT(customer_first_name, ' ' , customer_last_name) as 'Customer', customer_city as "City"
FROM customers
WHERE customer_zip LIKE '4%'
ORDER BY customer_city;

/*Exercise Six*/
SELECT order_id as "Order ID", DATE_FORMAT(order_date, '%M-%d-%Y') as "Order Date"
FROM orders
WHERE DATE_FORMAT(order_date, '%M') IN ('March', 'April', 'May') AND DATE_FORMAT(order_date, '%Y') IN ('2014') 
ORDER BY order_date;

/*Exercise Seven*/
SELECT order_id as "Order ID", DATE_FORMAT(order_date, '%m-%d-%y') as "Ordered"
FROM orders
WHERE order_date BETWEEN '14-05-01' AND '14-05-31'
ORDER BY order_date;

/*Exercise Eight*/
SELECT order_ID as 'Order ID', customer_id as 'Customer ID', DATEDIFF(shipped_date, order_date) as 'Difference'
FROM orders
WHERE DATEDIFF(shipped_date, order_date) >= 15
ORDER BY customer_id;

/*Exercise Nine*/
SELECT order_id as 'Order ID', customer_id as 'Customer ID', DATE_FORMAT(order_date, '%m-%d-%y') as 'Date Ordered'
FROM orders
WHERE shipped_date IS NULL
ORDER BY order_date DESC;

/*Exercise Ten*/
SELECT order_id as 'Order ID', DATE_FORMAT(order_date, '%m-%d-%y') as 'Date Ordered', 
    DATE_FORMAT(shipped_date, '%m-%d-%y') as 'Date Shipped', DAYNAME(shipped_date) as 'Order Day'
FROM orders
WHERE DAYNAME(shipped_date) = 'Sunday' OR DAYNAME(shipped_date) = 'Saturday'
ORDER BY DAYNAME(shipped_date);

/*Exercise Eleven*/
SELECT customer_last_name as 'Last Name', customer_phone as 'Phone', customer_fax as 'Fax'
FROM customers
WHERE customer_fax IS NOT NULL
ORDER BY customer_fax;

/*Exercise Twelve*/
INSERT items VALUES
(11,'Ode To My ERD',15,12.95);

SELECT item_id as 'Item ID', title as 'Title', artist_id as 'Artist ID', unit_price as 'Unit Price'
FROM items 
WHERE item_id >10;

/*Exercise Thirteen*/
UPDATE items
SET unit_price = 7.95
WHERE item_id = 11;

SELECT item_id as 'Item ID', title as 'Title', artist_id as 'Artist ID', unit_price as 'Unit Price'
FROM items 
WHERE item_id > 10;

/*Exercise Fourteen*/
DELETE FROM items
WHERE item_id > 10;
/*If it works, this should leave us with only TWO displays of an item with Item ID of 11.*/
SELECT item_id as 'Item ID', title as 'Title', artist_id as 'Artist ID', unit_price as 'Unit Price'
FROM items 
WHERE item_id > 10;

/*Exercise Fifteen*/
SELECT 
    CONCAT(customer_last_name, ', ', customer_first_name) as 'Customer',
    CONCAT('(', SUBSTRING(customer_phone, 1, 3) , ')' , 
               SUBSTRING(customer_phone, 4, 3) , '-' ,
               SUBSTRING(customer_phone, 7, 4)) as 'Phone'
FROM customers
ORDER BY CONCAT(customer_last_name, ', ', customer_first_name); 

/*Week Five Lab*/
SELECT orders.order_ID as 'Order ID', orders.order_date as 'Order Date',  
    CONCAT(customers.customer_first_name, ' ', customers.customer_last_name) as 'Customer', customers.customer_city as 'City'
FROM Orders
JOIN Customers
ON orders.customer_ID = customers.customer_ID
WHERE customer.customer_state = 'OH'
ORDER BY orders.order_date DESC;    

【问题讨论】:

  • 查询看起来没问题。客户表中是否有 customer_state = 'OH' 的记录?
  • 你有错误吗?或者结果不是你所考虑的......显示示例数据......
  • 我觉得它看起来也不错。我确实有状态为“哦”的记录...我稍后会添加它们以显示...如果您想要整个代码,请告诉我...因为它在我运行时不会给出任何错误它,只是我的那段代码没有显示任何内容。
  • 如果有帮助,请发布整个代码。
  • 哇! 是一个很好的问题的例子!谢谢!

标签: mysql sql inner-join workbench


【解决方案1】:

应该

WHERE customer.customer_state = 'OH'

成为

WHERE customers.customer_state = 'OH'

?

这是一个演示 http://sqlfiddle.com/#!9/9c86c/1

(注意客户上的 s)

【讨论】:

  • 天哪!太感谢了。这是我做的一件傻事。
  • 我住在雷德蒙德附近,如果您获得了较新版本的 SQL Server,您就不必像这样弄乱这些东西,它足够聪明,可以弄清楚。我猜你用开源软件一分钱一分货!
【解决方案2】:

我认为约翰找到了问题所在。令我惊讶的是,您的 SQL 客户端没有报错。

以后,您应该为您的表格设置别名,如下所示。这将使您的查询更易于阅读,并且更容易发现此类错误。

/*Week Five Lab*/
SELECT o.order_ID as 'Order ID', o.order_date as 'Order Date',  
    CONCAT(c.customer_first_name, ' ', c.customer_last_name) as 'Customer', c.customer_city as 'City'
FROM Orders o
   JOIN Customers c
      ON o.customer_ID = c.customer_ID
WHERE c.customer_state = 'OH'
ORDER BY o.order_date DESC; 

【讨论】:

  • YMMV,但我不认为单字符别名会使这更容易阅读……
  • 公平点。不过,我更喜欢它们而不是全表名称。也许短别名是最好的,例如客户,订单。
  • 别名在以表名作为前缀的列上大多是多余的。
  • 很高兴知道,但我必须同意,在我掌握了这个窍门之前,我可能想要保留整个表名!但为了将来,我想记住这一点。感谢您的帮助!
最近更新 更多