2014-11-05 2 views
-1

데이터베이스의 두 테이블에서 데이터를 선택하려고하면이 오류가 발생합니다.INNER JOIN을 사용하여 두 테이블의 데이터를 선택하려고 시도하는 MySql 오류

# 1064 - SQL 구문에 오류가 있습니다.

: 라인에서 'INNER가 hbr_billede.GalleriID = hbr_galleri.GalleriID LIMIT ON 을 hbr_galleri 가입'근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 4

이 쿼리입니다 (덴마크 테이블/열 이름에 대한 죄송합니다)

SELECT 
    `hbr_billede.BilledeID`, 
    `hbr_billede.GalleriID`, 
    `hbr_billede.FilePath`, 
    `hbr_billede.FilePathThumb`, 
    `hbr_billede.UploadetDato`, 
    `hbr_billede.UploadetAf`, 
    `hbr_billede.Fotograf`, 
    `hbr_billede.Caption`, 
    `hbr_billede.FeaturedFrontGallery`, 
    `hbr_billede.FeaturedWorldtour`, 
    `hbr_galleri.GalleriNavn` 
FROM `hbr_billede` 
INNER JOIN `hbr_galleri` 
ON `hbr_billede.GalleriID` = `hbr_galleri.GalleriID` 
WHERE `hbr_billede.BilledeID` = 17 

나는하지만 운, 그것은 phpMyAdmin을 작동 할 수있는 다양한 방법을 시도했습니다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까? 아니면 제가 방향을 가르쳐 줄 수 있습니까?

내 SQL이 두 테이블에 대한 스크립트를 작성, 다음과 같습니다

CREATE TABLE hbr_galleri 
(
    GalleriID int AUTO_INCREMENT NOT NULL, 
    GalleriNavn varchar(255) NOT NULL, 
    OprettetDato timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    DatoEvent date NOT NULL, 
    AntalBilleder int, 
    FeaturedBillede int, 
    OprettetAf int NOT NULL, /* BrugerID*/ 
    Offentligt boolean NOT NULL DEFAULT true, 
    unikt_galleri varchar(255) DEFAULT NULL, 
    PRIMARY KEY (GalleriID), 
    UNIQUE KEY unikt_galleri (GalleriNavn,DatoEvent), 
    FOREIGN KEY (OprettetAf) REFERENCES hbr_bruger(BrugerID) /*ON DELETE CASCADE*/ 
); 

CREATE TABLE hbr_billede 
(
    BilledeID int AUTO_INCREMENT NOT NULL, 
    GalleriID int NOT NULL, 
    FilePath varchar(255) NOT NULL, 
    FilePathThumb varchar(255) NOT NULL, 
    UploadetDato timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    UploadetAf int NOT NULL, 
    Fotograf varchar(255) NOT NULL, 
    Caption varchar(255), 
    FeaturedFrontGallery boolean NOT NULL DEFAULT false, 
    FeaturedWorldtour boolean NOT NULL DEFAULT false, 
    PRIMARY KEY (BilledeID), 
    FOREIGN KEY (GalleriID) REFERENCES hbr_galleri(GalleriID) ON DELETE CASCADE, 
    UNIQUE (FilePath), 
    UNIQUE (FilePathThumb) 
); 
+1

에 쿼리를 변경하려면이

'hbr_billede'.'BilledeID' 

시도로 변경해야합니다 예를 들어, 역 따옴표를 수정해야 ... join 절은 where 절 전에 발생합니다. – Sebas

+0

오 세상에, 그건 어리석은 실수였습니다. 그러나 그것은 적어도 다른 오류를 얻는 것이 아니라 도움이되었습니다. # 1054 - 알 수없는 열 'hbr_billede.BilledeID'in 'field list' 알 수없는 이유, 존재하는 이유 및 쿼리의 선택 부분에 ... – Djensen

+2

열 설명자가 표를 구분해야합니다. 만약 당신이 backick을 사용한다면 column. 예 : \'hbr_billede \'. \'BilledeID \ ' – Sebas

답변

2

당신은 WHERE 전에 INNER JOIN 절을 넣어해야합니다. 또한이

`hbr_billede.BilledeID` 

는 쿼리가 잘못이

SELECT 
    `hbr_billede`.`BilledeID`, 
    `hbr_billede`.`GalleriID`, 
    `hbr_billede`.`FilePath`, 
    `hbr_billede`.`FilePathThumb`, 
    `hbr_billede`.`UploadetDato`, 
    `hbr_billede`.`UploadetAf`, 
    `hbr_billede`.`Fotograf`, 
    `hbr_billede`.`Caption`, 
    `hbr_billede`.`FeaturedFrontGallery`, 
    `hbr_billede`.`FeaturedWorldtour`, 
    `hbr_galleri`.`GalleriNavn` 
FROM `hbr_billede` 
INNER JOIN `hbr_galleri` 
ON `hbr_billede`.`GalleriID` = `hbr_galleri`.`GalleriID` 
WHERE `BilledeID` = 17 
+0

네, 그 두 가지가 트릭을했습니다. 어쨌든 백틱 사용의 요지는 무엇입니까? phpMyAdmin은 인터페이스를 사용하여 쿼리를 작성하는 경우 기본적으로이를 추가하므로 어떤 이유로 추측해야합니다. – Djensen

+1

테이블에서 사용자 선택은 작동하지 않습니다. \'table \'에서 \'user \'을 선택하십시오. 열 이름에서 구별 된 이름을 구할 수 있습니다. – Sebas

+0

아, 완벽 함 :) – Djensen

관련 문제