1

我有一个程序可以从外部源下载信息,并为我输入的每个查询提供一个 sql 页面。通常每个标题有 3-6 个查询。每个 sql 页面加载一个新表,所有表都有相同的列。以下是查询 UsedCar 和 NewCar 的结果示例,这是 Title Automotive 中涉及的 6 个查询中的 2 个。

CREATE TABLE IF NOT EXISTS NewCar(Name char(255) DEFAULT NULL,
Phone char(255) DEFAULT NULL,
Address char(255) DEFAULT NULL,
Website char(255) DEFAULT NULL,
Email char(255) DEFAULT NULL,
Category char(255) DEFAULT NULL,
UNIQUE KEY Name (Name))
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

LOCK TABLES NewCar WRITE;
REPLACE INTO NewCar VALUES('whats it Auto','1-888-555-7327','63 Beech Hill Rd, Beechville, NS B1G 2R9','http://www.whatsit.com','','New Car Dealers');
REPLACE INTO NewCar VALUES('Hugh\'s Chev','888-555-6990','376 Main St, lower bohemia, NS B5G 2D6','','','New Car Dealer');
REPLACE INTO NewCar VALUES('Be It Motors Ltd','866-555-2771','90 Main St, Upper Bohemia, NS B9G 2K8','','','New Car Dealers');
UNLOCK TABLES;


CREATE TABLE IF NOT EXISTS UsedCar(Name char(255) DEFAULT NULL,
Phone char(255) DEFAULT NULL,
Address char(255) DEFAULT NULL,
Website char(255) DEFAULT NULL,
Email char(255) DEFAULT NULL,
Category char(255) DEFAULT NULL,
UNIQUE KEY Name (Name))
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

LOCK TABLES UsedCar WRITE;
REPLACE INTO UsedCar VALUES('whats it Auto','1-888-555-7327','63 Beech Hill Rd, Beechville, NS B1G 2R9','http://www.whatsit.com','','Used Car Dealers');
REPLACE INTO UsedCar VALUES('Hugh\'s Chev','888-555-6990','376 Main St, lower bohemia, NS B5G 2D6','','','Used Car Dealer');
REPLACE INTO UsedCar VALUES('Be It Motors Ltd','866-555-2771','90 Main St, Upper Bohemia, NS B9G 2K8','','','Used Car Dealers');
UNLOCK TABLES;

然后将它们加载到我的数据库中。

我的问题是试图将这些信息提取到我的网页中。我想创建一个链接,显示汽车下的唯一信息,不包括类别。我可以从一张桌子上做到这一点,但无法为多张桌子做到这一点。我已尝试研究该问题并尝试选择 DISTINCT 和 UNIQUE。除了做表 JOIN 和 UNION - 我确信这可能是我忘记的非常愚蠢的事情。

下面是我用来从单个表中绘制的 PHP,该表已被修改为尝试从 2 个表中绘制并返回“未找到记录”。

<?php
$result = mysql_query("SELECT DISTINCT Name FROM (SELECT * FROM UsedCar UNION    SELECT*FROM NewCar) ORDER BY name ASC");
if(mysql_num_rows($result) == 0){
echo("no records found");
} ELSE {
echo "<table border='0'; table id='address'>
<tr>
<th>Name</th>
<th>Phone</th>
<th>Address</th>
<th>Website</th>
</tr>";

while($row = mysql_fetch_array($result))

  {
  echo "<tr>";
  echo "<td>" . $row['Name'] . "</td>";
  echo "<td>" . $row['Phone'] . "</td>";
  echo "<td>" . $row['Address'] . "</td>";
  echo '<td><a href="' . $row['Website'] . '" target="_self\">' . $row["Website"] . '</a></td>';
  echo "</tr>";

  }
echo "</table>";
}

?>

很抱歉发了很长的帖子..:)

4

1 回答 1

2

部分问题是您的 SQL 语法,您缺少子选择上的别名

您不使用别名进行查询(请参阅SQL Fiddle):

SELECT DISTINCT Name 
FROM 
(
  SELECT * 
  FROM UsedCar 
  UNION    
  SELECT *
  FROM NewCar
) 
ORDER BY name ASC

使用别名有效(参见SQL Fiddle

SELECT DISTINCT Name 
FROM 
(
  SELECT * 
  FROM UsedCar 
  UNION    
  SELECT *
  FROM NewCar
) x
ORDER BY name ASC

但是,如果您只想要名称,则不需要子查询(请参阅SQL Fiddle):

SELECT name 
FROM UsedCar 
UNION    
SELECT name
FROM NewCar
于 2012-09-12T14:52:03.537 回答