0
I have a table with logs:
LOGGING (300 rows):
- id
- type_id
- timestamp
- notes

And a table with logging types:
LOGGING_TYPES (4 rows):
- id
- typename

字段 logging.type_id 链接到 logging_types.id。

现在我做了这个查询:

SELECT logging.*,logging.types.tyopename 
FROM logging, logging_types 
JOIN logging_types ON logging.type_id=logging_types.id.

结果只有 4 行,因为 types 表只包含 4 条记录。我不想要那个。我希望结果为 300 行,并显示日志记录类型的名称。怎么做?

4

3 回答 3

1

您的使用选择INNER JOIN是正确的。问题是您混合使用逗号和JOIN语法来连接表。一次只使用一个。尝试

SELECT l.*,
       t.typename 
  FROM logging l JOIN logging_types t
    ON l.type_id = t.id

这是SQLFiddle演示。

于 2013-06-18T07:16:36.203 回答
0

你需要LEFT JOIN像这样使用:

SELECT l.*, lt.typename FROM Logging l
      LEFT JOIN Logging_Types lt
             ON l.type_id = lt.id

使用示例数据查看此 SQLFiddle

于 2013-06-18T07:11:16.753 回答
0

我认为您可以LEFT JOIN以正确的方式使用它们

SELECT a.*, b.tyopename 
FROM logging a 
LEFT JOIN logging_types b 
ON a.type_id=b.id
于 2013-06-18T07:11:25.647 回答