1

私はMySQLを初めて使用し、テーブルで指定された外部キーによって主キーを照会または参照するのに苦労しています。誰かがこれを行う方法をかなり簡単な言葉で説明してもらえますか?他の大多数が私よりも多くのMySQLの知識を割り当てていることを考えると、私が検索したものはすべて理解するのが少し難しいからです.

これらがテーブルであると仮定しましょう:

CREATE TABLE IF NOT EXISTS customer(
    custID int AUTO_INCREMENT,
    custLname varchar(30),
    custAdd varchar(100),
    custSuburb varchar(30),
    custPcode varchar(4),
    custState varChar(20),
    custPhone varchar(10),
    PRIMARY KEY (custID)
)ENGINE = INNODB;

CREATE TABLE IF NOT EXISTS tour(
    DailyTourID int,
    tourDate DATE,
    tourTime TIME,
    tourName varchar(30),
    tourDriverID int,
    tourBusID varchar(2),
    PRIMARY KEY (DailyTourID, tourDate),
) ENGINE = INNODB;

CREATE TABLE IF NOT EXISTS TourCustLink(
    TourCustLinkID int AUTO_INCREMENT,
    TourID int,
    TourDate DATE,
    customerID int,
    PRIMARY KEY (TourCustLinkID),
    FOREIGN KEY (TourID, TourDate) REFERENCES tour(DailyTourID, tourDate),
    FOREIGN KEY (customerID) REFERENCES customer(custID)
) ENGINE = INNODB;

これがかなり悪い例であることは承知していますが、各顧客の custLname、custAdd、custPhone、および tourDates を表示したいとしましょう。どうすればこれを達成できますか?

4

1 に答える 1

1

JOIN彼ら:

SELECT 
  c.custLname,
  c.custAdd,
  c.custPhone,
  t.TourDate,
  t.TourName,
  ...
FROM TourCustLink   AS tl 
INNER JOIN Customer AS c  ON tl.customerId = c.custID
INNER JOIN Tour     AS t  ON tl.tourID     = t.DailyTourID 
                         AND tl.tourDate   = t.tourDate;

一致しない行を含めたい場合は、の代わりにOUTER JOINs (LEFT JOINまたは)を使用する必要がある場合もあります。RIGHT JOININNER JOIN

タイプの詳細については、次のJOIN記事を参照してください。

于 2013-04-25T09:32:23.470 に答える