对于熟悉 SQL 的人来说,这似乎是一个简单的问题,但对我来说却不是。
无论如何,这是一个示例表:
主键(也是唯一键)在id上。所以基本上这个场景是休闲的。用户可以添加图像。新添加的图像以comune_number值0插入,避免重复(文件名 =图像通过 PHP)。插入的图像可以分配给另一个表中的类别。相同的图像可以分配给许多类别,每个类别都插入一个具有类别 ID (comune_number) 的新行。两个表之间的关系在comune_number上。
我想显示图像,并选中已分配的复选框。
我的问题很简单。如何一次包含所有图像,但在已分配相同图像的情况下,包含该 comune_number 而不是 0。我不在乎顺序。我想要达到的结果是这样的:
我知道GROUP BY,所以如果我尝试
mysql_query("SELECT * FROM banner WHERE `comune_number` = 0");
或者
mysql_query("SELECT * FROM banner GROUP BY `image`");
我最终得到了相同的(不想要的)结果。
很可能我必须将两个查询合二为一,但我不知道是哪个以及如何。
注意 1:我在 phpMyAdmin 中尝试了许多组合,基于我的(少量)知识和我在 Google 中发现的内容(包括 Stackoverflow),但没有一个结果如图所示。
注2:MySQL 5.1 版
欢迎仅使用 MYSQL 或与 PHP 解决方案结合使用。
编辑
我需要保留 comune_number。因此,当我显示图像时,我需要知道 id。
我的查询必须依赖 comune_number,所以当我需要 comune_number = 10 时,结果应该如上图第二张所示。
编辑2
看来我没有说清楚。所以我想要的是,当用户观看 id 10 的类别时,向他展示所有图像一次,并标记分配给该类别的图像。
另一个例子是here。因此,如果用户正在观看 id=9 的类别(comune_number),则将每张图片显示一次,并标记分配给它的两个。