这些是我的表(有一些记录):
Product:
ID PRICE NAME DESCRIPTION
1 100 laptop laptop_desc
2 200 mouse mouse_desc
3 300 伊吾 伊吾伊吾
Product_Translations:
PID LANG NAME DESCRIPTION
1 ch 伊吾 伊吾伊吾
使用以下查询我可以加入2个表:
SELECT p.id,p.price,
COALESCE(pt.Name, p.Name) Name,
COALESCE(pt.Description, p.Description) Description
FROM Product p
LEFT JOIN Product_T pt
ON pt.PID = p.ID
AND pt.LANG = 'ch'
WHERE (UPPER(p.name) LIKE UPPER('%伊吾%') OR UPPER(pt.name) LIKE UPPER('%伊吾%'))
现在我的问题是,在上面的查询中我需要明确地提到select查询中的每一列(比如p.id,p.price;真正的表有更多的列),我不想这样做。在我的情况下,我需要一直得到所有列,即select *
。但是如果在查询中给出p.*
,则名称和描述列将是预期的两倍(来自Product和Product_T表)。那么有什么方法我仍然可以给p。*并获得合并的名称和描述列?
感谢您的帮助。
答案 0 :(得分:1)
您可以查询架构以查找表上的列,然后从中动态构建select语句。 (例如,如果两个表中都出现一个具有相同名称的列,则只从其中一个表中选择它。)
有关如何在hsqldb中查询架构的信息,请参阅http://hsqldb.org/doc/2.0/guide/databaseobjects-chapt.html#dbc_information_schema。