2016-11-06 10 views
1

mysqlではどのようにしてすべてのビジネスデータを取得するクエリを作成できますか?また、別の方法でより良い場合は、ユーザーがそのビジネスに従っているかどうかを確認しますか?私は、ユーザーが(= 1は、その人を意味するであろう状況は以下の通りです)事業以下であれば、次の関係テーブルを決定する必要があります:現在のユーザーがビジネスデータをフォローしているかのように、すべてのビジネスデータを取得するにはどうすればよいですか?

CREATE TABLE IF NOT EXISTS `Relationship_User_Follows_Business` (
    `user_id` int(10) unsigned NOT NULL, 
    `business_id` int(10) unsigned NOT NULL, 
    `status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '1=following, 0=not following' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 

ALTER TABLE `Relationship_User_Follows_Business` 
    ADD UNIQUE KEY `unique_user_business_id` (`user_id`,`business_id`); 

ちょうど名前、電話番号、等などの異なる企業のデータを保持しているビジネステーブルを想定私はクエリ(Business。*)内のすべてのビジネスデータを返したいと思います。私は各ビジネス行の終わりにステータス(0または1)を追加して、ユーザーがそのビジネスに従っているかどうかを判断したいと思います。私は次のクエリを試しましたが、関係行がある場合にのみビジネスを表示するように結果を絞り込んでいるため、機能しません。私はテストユーザーIDとして104を使用しています

SELECT Business.*, Relationship_User_Follows_Business.status FROM Business, Relationship_User_Follows_Business WHERE 104=Relationship_User_Follows_Business.user_id AND Business.id=Relationship_User_Follows_Business.business_id 

注:私は、ユーザーが以下の場合、私は唯一の関係の行を作成するため、関係行が存在するかどうにかかわらず、すべての企業を表示したいです。ユーザーIDは、通常、あなたが詳細テーブルからすべてマスタテーブルのレコードと一致するすべての行を保持しLEFT JOINないINNER JOINを探しているユーザーではなく、静的104

+0

コードが正しいようです。何が問題なのですか? e – scaisEdge

+0

@scaisEdge左参加.. – sagi

答えて

1

に依存するだろう。また、暗黙的な結合構文(コンマ区切り)を使用しないで、結合の適切な構文を使用しないでください。

SELECT Business.*, Relationship_User_Follows_Business.status 
    FROM Business 
    LEFT JOIN Relationship_User_Follows_Business 
    ON Business.id = Relationship_User_Follows_Business.business_id 
    AND Relationship_User_Follows_Business.user_id = 104 
関連する問題