以下是我在mysql中运行的查询工作正常 -
SELECT *
FROM `events` e
LEFT JOIN venues v
ON e.venue_id = v.id
WHERE e.artist_id = 16
在我的活动和艺术家表格中,我有一些常用的命名属性,例如id
,lat
,long
等
因此,在从查询中获取结果输出时,我需要做类似这样的事情来使id,lat,long区分是指定与其表相关的所有列名 -
SELECT e.id as e_id, v.id as v_id .........AND LOT MORE
FROM `events` e
LEFT JOIN venues v
ON e.venue_id = v.id
WHERE e.artist_id = 16
所以你只看到我需要写的很多东西,而不是简单的*
...所以来自开发人员的懒惰种族,我正在寻找缩短这个而不是写作和在SELECT ......
中指定所有内容。
如果我有办法让它缩短,请告诉我。
答案 0 :(得分:1)
您可以使用与此类似的方式自动枚举列:
$cols = [];
$stmt = $db->exec("SHOW COLUMNS FROM events");
foreach($stmt as $r)
$cols []= "e.{r['Field']} as e_{r['Field']}";
// the same for the second table, then
$cols = implode(',', $cols);
"SELECT $cols FROM ..."
如果您正在执行此类许多查询,则可以在某处缓存生成的列列表以避免过多的“SHOW COLUMNS”查询(尽管这些查询非常快)。