我有两张table:
immagini(意大利语意为“图像”):
| id_img | id_immobile | id_utente | img_url | type | visible_website | visible_pdf | pdf_img_type | category |
|--------|-------------|-----------|---------|---------|-----------------|-------------|--------------|----------|
| 3 | 1 | 0 | 1.jpg | general | 1 | 1 | foto | foto |
immobili(意大利语“不动产”):
| id_immobile | type | id_utente |
|-------------|------|-----------|
| 1 | demo | 90 |
(这不是满桌的,但我们不需要全部的)
在我的应用模型中,我需要列出所有 immobili
行基于某些条件。
我想解决的问题是,我需要一份 immobili
我加入了基于“id\u immobile”字段键的图像。
我需要的照片 immagini
只有table上有 type
的价值 main
. 如果没有 main
那我还需要 immobili
排着队出现,但是 img_url
你应该回来 NULL
.
所以我现在的问题是:
SELECT
immobili.id_immobile,
CONCAT(SUBSTRING_INDEX(immagini.img_url, ".", 1), "_thumb.", SUBSTRING_INDEX(immagini.img_url, ".", -1)) as img
FROM immobili
LEFT JOIN immagini
on immagini.id_immobile = immobili.id_immobile
WHERE (immagini.type = "main" OR immagini.type = "general" OR immagini.type IS NULL)
GROUP BY immobili.id_immobile
ORDER BY immobili.data_inserimento DESC, immobili.data_aggiornamento DESC
通过这个查询,我得到了上面所有的工作,但如果 immagini
表为空或没有 main
类型,整体 immobile
未显示行(返回0行)。
我想要的结果是显示所有 immobili
行和显示
NULL img_url
如果没有匹配的行。
2条答案
按热度按时间aoyhnmkz1#
删除where子句并移入条件
on
子句,以便只有行从immagini
满足你的条件,如果你有任何过滤器immobili
然后使用where子句3mpgtkmj2#
查询的问题是您在
WHERE
条款。它完全过滤掉了记录。通常的解决方法是移动WHERE
逻辑进入ON
条款:注意,我删除了
GROUP BY
子句,因为您的select实际上不使用任何聚合。根据您的数据,上述查询是有意义的。也许你打算用GROUP_CONCAT
,但我们需要一些数据来证实这一点。