繁体   English   中英

同时查询“照片”表和“书签”表,以便了解带有书签的照片

Querying 'photos' table, but also 'bookmarks' table at same time so bookmarked photos are known

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

如何查询称为照片的表中的所有记录, 知道哪些结果照片已由当前用户使用一次查询添加了书签?

这是我的桌子:

--
-- 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

谢谢。

编辑为错字。

编辑第二次错别字。

2 个回复

这是SQL Fiddle上的示例工作代码。 正如评论中指出的那样,您在bookmarks表上没有bookmarks.id列,并且photos表中确实存在photo.id 再次检查您收到的错误,似乎是不正确的。

您查询应该是这样的。

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

根据您的表结构photos.facebook_id不存在; 它在书签表中

1 我可以开始记录应用程序启动的sql查询,以便了解它在做什么吗?

嘿,我正在学习一个电子商务软件包(Spree)。 我通过GUI删除产品后出现问题。 我尝试通过更改/重新添加行来手动撤消删除操作,但失败了。 我的问题是:有什么方法可以添加应用程序或dbms代码/配置/软件来记录事务? 最好使用sqlite3,但我可以切换到mysql,甚至p ...

2 如何调试Java ant程序,以便了解程序流程?

您好,我是Java新手,我有一个关于Java调试的问题,所以最近我掌握了非常大的Java蚂蚁代码,因此我该如何调试以理解程序的流程。 通常我调试小代码,但是这次我不知道它从哪里开始和在哪里结束。 那么了解Java程序流程的理想方法是什么。 ...

3 了解带有“ IIF”的Microsoft Office Access SQL查询

在一个较大的项目中,我正在将数十个查询从Microsoft Office Access数据库(MDB)迁移到Oracle。 尽管我几乎可以理解所有可以在Access中编写的疯狂构造,但是我却一次失败。 (简化的)查询为: 在这里, SomeField是表中的一列, SomeP ...

4 书签查询

我在执行计划中看到一个名为“书签查找”的节点。 这是什么意思? 在计划内的步骤中,它花费最多。 有什么优化建议吗? ...

6 了解 docx 文件中的书签

我正在尝试从 Docx 文件中提取书签,我编写了一段代码,用于提取某些 Docx 文件中的书签,但在某些 docx 文件中找不到任何书签。 我正在使用 python-docx 我基本上是找到w:bookmarkStart标签并转到其父标签并检索段落中的所有运行。 但是有些文档既没有w:bookma ...

7 我在Unity中没有语法错误,如何找到错误,以便了解为什么我的十字准线仍停留在屏幕中央?

对于Unity Game:十字准线是否不应该像玩家的装备那样指向敌人而相应地移动? 如何找到没有语法错误消息的错误? 我尝试访问Unity论坛,发现对光线投射的支持遵循了指导,将指示信息添加到crosshair.cs脚本中,我没有收到语法错误。 除了代码中的十字准线之外,我按照代 ...

8 了解引用其他表的 SQL 插入查询

我将从完整解释我的设置开始。 我正在运行 opencart,并且在很多情况下我想将制造商分配给整个类别。 而不是进入并为每个单独的产品分配一个制造商,我知道这可以通过一个 SQL 查询来完成。 我希望这个答案和例子能让我在未来需要进行大规模更新时更好地理解 我有一个带有以下列标题的表 oc_prod ...

10 选择带有2个表的查询

我有一个页面,人们可以在其中发布评论,而页面上的人们可以在其他人的个人资料上单击“关注”(与Facebook上的LIKE相同) 我希望有SELECT查询,该查询将发布我的所有评论,但将按照以下方式对其进行排序:首先,打印单击“关注”的最新人员的2条最新评论(它们必须在本周发布)。 第二, ...

2015-08-16 20:37:08 1 46   php/ mysql
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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