Php 如何在表中选择一个值,如果该值不存在,如何选择另一个值?

Php 如何在表中选择一个值,如果该值不存在,如何选择另一个值?,php,mysql,sql,Php,Mysql,Sql,我试图找到一个解决办法,但大多数其他答案都不起作用 我有一个页面来翻译我的网站,使用mySQL,所有的文本都会在一个溢出中回音:当然是自动的,这样整个页面就不会充满文本,我希望它回音所有已经用翻译语言翻译的文本。网站上所有尚未翻译的文本都应以英语作为显示语言。我试过各种各样的方法,但都没用 $sql=mysql_query("SELECT * FROM `website` WHERE language='$_SESSION[translate]' GROUP BY name"); 是我当前的查

我试图找到一个解决办法,但大多数其他答案都不起作用

我有一个页面来翻译我的网站,使用mySQL,所有的文本都会在一个溢出中回音:当然是自动的,这样整个页面就不会充满文本,我希望它回音所有已经用翻译语言翻译的文本。网站上所有尚未翻译的文本都应以英语作为显示语言。我试过各种各样的方法,但都没用

$sql=mysql_query("SELECT * FROM `website` WHERE language='$_SESSION[translate]' GROUP BY name");

是我当前的查询。这将以翻译语言返回所有翻译后的值,这很好,但它不会显示所有的“名称”值,并且应该以英语显示所有其他“名称”值,因为它们还没有翻译。但是我不知道怎么做,联接似乎只适用于多个表。

您可以将一个表本身联接起来:

SELECT w1.name, IFNULL(w2.value, w1.value) AS value
FROM website AS w1
LEFT JOIN website AS w2 ON w1.name = w2.name AND w2.language = '$_SESSION[translate]'
WHERE w1.language = 'english'

当没有翻译时,外部连接会导致空值,而IFNULL则使用英语版本作为默认值。

我不明白你在问什么问题。问题是我的网站有一个页面可以翻译它。来自网站的所有文本都存储在数据库的一个表中,所有文本都有一个名称。在翻译页面,所有未翻译的文本应以英语显示,所有已翻译的文本应以翻译语言显示。但是名称应该是不同的,这就是问题所在。所以你有:索引-英语-你好,这是一个网站。索引-荷兰-你好,这是一个网站。它应该只显示荷兰语索引,因为索引不能是重复的,只能在那里显示一次。你能解释一下你的答案吗?我了解很多基本函数,但当我阅读它时,我真的不喜欢连接函数,因为它很难理解。你真的需要了解连接,因为它们对于SQL编程是必不可少的。是一个很好的教程Hanks,这看起来像是一个很好的教程,比W3学校的教程更干净。我希望它能帮助我找到这个问题的答案。你们能解释一下你们的答案中w2和w1是什么吗?它们是网站的别名。由于您要访问同一个表两次,因此需要使用别名来区分它们。这解决了问题吗?如果答案是,请接受。我试图在另一个问题中将其称为重复,但它不允许,因为它没有被接受或投票。