Mysql 查询';照片';表,但也是';书签';同时使用表,这样书签照片就可以知道了

Mysql 查询';照片';表,但也是';书签';同时使用表,这样书签照片就可以知道了,mysql,sql,database,Mysql,Sql,Database,如何查询名为photos的表中的所有记录,和如何知道当前用户使用单个查询将哪些结果照片添加到书签中 这是我的桌子: -- -- Table structure for table `photos` -- CREATE TABLE IF NOT EXISTS `photos` ( `id` int(11) NOT NULL auto_increment, `author` bigint(20) NOT NULL COMMENT 'The user''s Facebook ID.',

如何查询名为photos的表中的所有记录,如何知道当前用户使用单个查询将哪些结果照片添加到书签中

这是我的桌子:

--
-- Table structure for table `photos`
--

CREATE TABLE IF NOT EXISTS `photos` (
  `id` int(11) NOT NULL auto_increment,
  `author` bigint(20) NOT NULL COMMENT 'The user''s Facebook ID.',
  `filename` varchar(255) NOT NULL,
  `thumbnail` varchar(255) NOT NULL,
  `post_date` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `description` varchar(140) NOT NULL,
  `finalist` tinyint(4) NOT NULL DEFAULT '0',
  CONSTRAINT user_must_exist FOREIGN KEY (author)
    REFERENCES users(facebook_id)
    ON DELETE CASCADE,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `bookmarks`
--

CREATE TABLE IF NOT EXISTS `bookmarks` (
  `facebook_id` bigint(20) NOT NULL COMMENT 'The author''s Facebook ID.',
  `photo_id` int(11) NOT NULL,
  CONSTRAINT photo_should_exist FOREIGN KEY (photo_id)
    REFERENCES photos(id)
    ON DELETE CASCADE,
  CONSTRAINT user_should_exist FOREIGN KEY (facebook_id)
    REFERENCES users(facebook_id)
    ON DELETE CASCADE,
  UNIQUE KEY `no_duplicates` (`facebook_id`,`photo_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='The user''s favourite photos.';
我可以想象这个查询会像下面这样:

SELECT 
    photos.*, 
    bookmarks.photo_id AS bookmark 
FROM photos
LEFT JOIN bookmarks 
    ON bookmarks.photo_id = photos.id 
    AND photos.author = 123456789
但是,这不起作用,我收到以下MySQL错误:

Unknown column 'photos.id' in 'on clause'
Barmar指出,在一次轻微的打字错误修正后,keyur的代码对我起了作用

SELECT photos . * , bookmarks.photo_id AS bookmark
FROM photos
LEFT JOIN bookmarks ON photos.id = bookmarks.photo_id
AND bookmarks.facebook_id = 123456789
多谢各位

因打字错误而编辑


编辑第二次打字。

这里是一个示例工作代码。正如评论中所指出的,您的
书签
表上没有
bookmarks.id
列,
photo.id
确实存在于
photos
表中。再次检查您收到的错误,因为似乎有不正确的地方。

这里是一个示例工作代码。正如评论中所指出的,您的
书签
表上没有
bookmarks.id
列,
photo.id
确实存在于
photos
表中。再次检查您收到的错误,因为似乎有不正确的地方。

您的查询应该是这样的

SELECT 
    photos.*, 
    bookmarks.id AS bookmark 
FROM photos
LEFT JOIN bookmarks 
    ON photos.id = bookmarks.photo_id 
    AND bookmarks.facebook_id = 123456789

根据您的表结构
照片。facebook\u id
不存在;它位于bookmarks表中

您应该这样查询

SELECT 
    photos.*, 
    bookmarks.id AS bookmark 
FROM photos
LEFT JOIN bookmarks 
    ON photos.id = bookmarks.photo_id 
    AND bookmarks.facebook_id = 123456789

根据您的表结构
照片。facebook\u id
不存在;它在书签表中

您确定这是错误吗?表结构中肯定有一个
photos.id
列。但是,没有
bookmarks.id
(在您的SELECT子句中使用)或
photos.facebook\u id
(在ON子句中)--
facebook\u id
列位于
bookmarks
,而不是
photos
@Barmar是的,您是正确的。那是个打字错误。它应该已读取bookmarks.photo\u id-已更正。您确定这是错误吗?表结构中肯定有一个
photos.id
列。但是,没有
bookmarks.id
(在您的SELECT子句中使用)或
photos.facebook\u id
(在ON子句中)--
facebook\u id
列位于
bookmarks
,而不是
photos
@Barmar是的,您是正确的。那是个打字错误。它应该已经读过书签了。照片id-更正。是的,我的坏。。。photos.facebook\u id应该是photos.author-更新的。是的,我的错。。。photos.facebook\u id应该是photos.author-updated。