如何使用Join从两个表中搜索数据

时间:2016-08-03 21:10:21

标签: php

这是我的SELECT查询用于从数据库中搜索用户。问题是我只能获得在postImg表中发布任何内容的用户的搜索结果。否则找不到用户。我想以这样的方式搜索,即使任何用户没有发布任何帖子,那么应该找到它。我正在使用此查询:

 <?php 
        $sql =  "SELECT * FROM postImg LEFT JOIN user ON postImg.userID=user.userID 
        WHERE user.userID='".$page_owner."' AND (userName LIKE '%".$searchVal."%') GROUP BY user.userID ";
        $res3 = mysql_query($sql) or die(mysql_error());
        while($row2=mysql_fetch_assoc($res3)){
        echo $row2['userName']; // From user Table

        echo $row2['likes'];    // From postImg table
        echo $row2['posts'];    // From postImg table
       } ?>

2 个答案:

答案 0 :(得分:0)

UPDATE Estimates
SET CreatedDate = str_to_date( CreatedDate, '%c/%e/%y' )

答案 1 :(得分:0)

我认为你想要user LEFT JOIN postImg,而不是像你在这里那样。

写入的查询将返回postImg中的每条记录,无论是否有关联的user

显然,您希望每个user是否有postImg

顺便提一下,我认为将其更改为RIGHT JOIN也会起作用,正如罗伯特在他的答案中所建议的那样。但是,我可以依靠一只手的手指,看到RIGHT加入的次数。 。 。因此,我建议翻转表名。 (“给他们他们习惯的东西。”)

编辑:澄清(为了Peanut Gallery的利益......):这两种形式的所谓“外部联接”等同于。术语LEFTRIGHT只是指两个表中的哪一个是主要的......“LEFT侧的那个,”之前的 >单词JOIN,(原始帖子中显示的查询中的postImg),或“RIGHT上的那个”,之后单词{ {1}}。 (JOIN)我将调用“master”中的所有行,以及可能找到的“other”表中的任何匹配值。

无论出于何种原因,我很少在生产代码中使用user个连接。当然,并不是说他们不能完成,而只是因为我发现不是(通常)已完成。