简体   繁体   中英

select multiple rows from tow tables mysql

I'm trying to select mltiple rows from tow table : first table is donor

       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  )

);

second table is 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) 

   );

with this select statement:

        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;

but, I get error

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

A UNION is used to combine more than one result set into a single result set - and each result set must have the same set of columns.

What you need is a JOIN , which is how you link multiple tables together on foreign keys etc and would be something like this:

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'

Actually you should not be using UNION but JOIN :)

you query will look like this

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 is not what exactly you need, Read some more about JOINS . Also please change the selection alias of columns as per the need. And you can use Left Join instead of Inner Join if you don't want a mandatory join condition on tables.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM