簡體   English   中英

從兩個表中選擇多行mysql

[英]select multiple rows from tow tables mysql

我正在嘗試從絲束表中選擇多個行:第一個表是施主

       CREATE TABLE donor(
   donor_number INT NOT NULL AUTO_INCREMENT,
   d_name VARCHAR(30) NOT NULL,
   mobile_number INT NOT NULL,
   blood_group VARCHAR(20) NULL,
      dob DATE NOT NULL,
   gender ENUM('male','female') NOT NULL,
    govid INT(10) NOT NULL,
   PRIMARY KEY (donor_number  )

);

第二張表是blood_donation

    CREATE TABLE blood_donation(

   donor_number INT NOT NULL,
   date_of_donate DATE NOT NULL,
   blood_group VARCHAR(20) NULL,
   serial_number INT(10) NOT NULL,
   blood_component ENUM('wb','prcb') NOT NULL,
   PRIMARY KEY (donor_number , date_of_donate ),
   FOREIGN KEY (donor_number) REFERENCES donor(donor_number) 

   );

使用以下選擇語句:

        SELECT 
serial_number,
blood_group
FROM blood_donation
WHERE date_of_donate = '2012-07-18'
UNION ALL
SELECT 
blood_group
FROM donor
WHERE donor.donor_number=blood_donation.donor_number;

但是,我得到了錯誤

    SQL state 42S22: Unknown column 'blood_donation.donor_number' in 'where clause'
any idea????

UNION用於將多個結果集組合為一個結果集-每個結果集必須具有相同的列集。

您需要的是JOIN ,這是您如何在外鍵等上將多個表鏈接在一起的方式,如下所示:

SELECT 
  serial_number,
  blood_group
FROM blood_donation
INNER JOIN donor ON donor.donor_number=blood_donation.donor_number
WHERE date_of_donate = '2012-07-18'

實際上,您不應該使用UNION而是JOIN :)

您查詢將如下所示

SELECT 
  blood_donation.serial_number,
  donor.blood_group 
FROM
  blood_donation ,
  donor 
WHERE donor.donor_number = blood_donation.donor_number  AND date_of_donate = '2012-07-18' ;
 SELECT 
dd.serial_number,
dd.blood_group
FROM blood_donation dd
inner join
donor d
on d.donor_number=dd.donor_number
WHERE dd.date_of_donate = '2012-07-18';

UNION並不是您真正需要的,請閱讀有關JOINS的更多信息。 另外,請根據需要更改列的選擇別名。 如果您不希望在表上使用強制Inner Join則可以使用Left Join代替Inner Join

暫無
暫無

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

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