Mysql 从静态联接表移动到使用SELECT执行联接

Mysql 从静态联接表移动到使用SELECT执行联接,mysql,select,join,syntax,Mysql,Select,Join,Syntax,我有两个表格,一个是评论(id,标题,封面,文字,评分,更新),另一个是艺术家(id,艺术家姓名) 我在评论表中有一列艺术家id 直到今天早些时候,我只是访问了一个连接了两个表的表,但结果表明这将导致后续问题 下面是连接代码需要用到的地方的示例: mysql_select_db($database_em, $em); $query_getDisplay = "SELECT news.title, news.cover_art, news.blog_entry, news.rating, DATE

我有两个表格,一个是评论(id,标题,封面,文字,评分,更新),另一个是艺术家(id,艺术家姓名)

我在评论表中有一列艺术家id

直到今天早些时候,我只是访问了一个连接了两个表的表,但结果表明这将导致后续问题

下面是连接代码需要用到的地方的示例:

mysql_select_db($database_em, $em);
$query_getDisplay = "SELECT news.title, news.cover_art, news.blog_entry, news.rating, DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted FROM news ORDER BY news.updated DESC     LIMIT 1"; 
$getDisplay = mysql_query($query_getDisplay, $em) or die(mysql_error());
$row_getDisplay = mysql_fetch_assoc($getDisplay);
$totalRows_getDisplay = mysql_num_rows($getDisplay);
这是我想加入的一个团队:

artists.artists_name
FROM   news JOIN artists ON artists.id = news.artistid
但无论我把它放在哪里,我认为它应该放在哪里(介于news.rating和DATE_格式之间,后面加逗号),页面都会断开,我得到以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(news.updated, '%M %e, %Y') AS formatted FROM news ORDER BY news.updated DESC LI' at line 2
这是整个代码减去我在标题中的sql注入开关代码。我已经尝试在news.rating和DATE_格式的每个实例之间添加连接代码,以及各种其他想法,并浏览了stackoverflow的知识库(顺便说一句,这是基于我在David Powers教程中使用的代码,因此大部分代码甚至可能是多余的)

顺便说一句,这是实际页面中的代码:

<!-- start center column include -->
<div class="center_column">
<div class="center_column_title">
    <?php echo date('H:i:s'); ?> GMT
</div>
<div id="blog_posts">
  <?php do { ?>
    <h2><?php echo $row_getDisplay['title']; ?></h2>
    <h3><?php echo $row_getDisplay['artists_name']; ?></h3>
    <p class="cover_art"><img src="<?php echo $row_getDisplay['cover_art']; ?>" /></p>
    <p class="updated">Updated <?php echo $row_getDisplay['formatted']; ?></p>
    <p class="blog_entry"><?php echo nl2br($row_getDisplay['blog_entry']); ?></p>
    <p class="blog_rating">Rating - <?php echo $row_getDisplay['rating']; ?> (out of a possible 1,000,000)</p>
    <?php } while ($row_getDisplay = mysql_fetch_assoc($getDisplay)); ?>
</div>
<p>&nbsp;</p>
</div>
<!-- end center column include -->

格林尼治标准时间

”/>

已更新

评级-(在可能的1000000中)


我建议,如果您的表是关系表,那么使用外键到另一个表主键,这样您就可以使用查询联接表

但是你仍然可以加入这个团队

$query=“从查看左外部连接艺术家中选择*”;
无论如何,让我看看这个网站…:D

这里有两个FROM子句:

mysql_select_db($database_em, $em);
$query_getDisplay = "SELECT news.title, news.cover_art, news.blog_entry, news.rating, artists.artists_name
FROM   news JOIN artists ON artists.id = news.artistid, DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted FROM news ORDER BY news.updated DESC LIMIT 1"; 
将其更改为:

mysql_select_db($database_em, $em);
$query_getDisplay = "SELECT news.title, news.cover_art, news.blog_entry, news.rating, artists.artists_name, DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted
FROM   news JOIN artists ON artists.id = news.artistid ORDER BY news.updated DESC LIMIT 1"; 

我会的,但它在我的笔记本电脑上的MAMP中。但我会让你知道它何时在线。所以你认为我应该在$query\u getDisplay=“SELECT news.title,news.cover\u art,news.blog\u entry,news.rating”的每个实例下面的行中添加$query=“SELECT*FROM Review LEFT OUTER JOIN Artist”,artists.artists_name FROM news加入artists.id=news.artistid,DATE_格式(news.updated,“%M%e,%Y”)的艺术家,格式为news.updated DESC LIMIT 1的新闻订单格式";很好,现在还没有中断,但是艺术家的名字没有出现在博客标题中。也许还有其他地方需要加入代码。哦,等等,我明白你的意思了。让我来修复另一个实例谢谢,效果很好。我刚刚把它添加到了其他几个地方,它成功了!!
mysql_select_db($database_em, $em);
$query_getDisplay = "SELECT news.title, news.cover_art, news.blog_entry, news.rating, artists.artists_name, DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted
FROM   news JOIN artists ON artists.id = news.artistid ORDER BY news.updated DESC LIMIT 1";