结合使用JOIN和多个LIKE

约翰

我做了一个搜索字段,它发送2个值:

  1. 电话号码
  2. 汽车登记号

这两个字段都是必填且唯一的。电话号码在表A中,汽车注册号在表2中。这些表在PersonID上联接。这是表1的主要和唯一性。并且在表2中不是主要和唯一的,但值相同。

我正在使用SELECT来确保匹配,如果电话号码和汽车登记号码不属于同一个人,我将回显插入的数据不正确。

SELECT * 
FROM Person 
LEFT OUTER JOIN Car on Car.PersonID 
WHERE Phonenumber LIKE ".$_POST['phonenumber']." AND 
WHERE Carregnumber LIKE ".$_POST['carregnumber'].";

这不会给我任何结果。

我也尝试过:

SELECT * 
FROM Person 
WHERE Phonenumber LIKE ".$_POST['phonenumber']." 
LEFT OUTER JOIN Car on Car.PersonID 
WHERE Carregnumber LIKE ".$_POST['carregnumber'].";

这两个字段都用$ _POST定义。当我刚使用时:SELECT * FROM Person WHERE Phonenumber LIKE ".$_POST['phonenumber']."它会给我结果。

我对JOINS有点陌生,并且已经看了一些教程,告诉我INNER,OUTER和LEFT JOINS之间的区别。所以我不太确定我是否做得很好(好吧,我猜不是,否则我会得到数据)

我是朝正确的方向前进吗,还是我必须使用在Stack Overflow上找到的类似查询的查询:

SELECT airline, flt_no, fairport, tairport, depart, arrive, fare
FROM (SELECT * FROM flights
    INNER JOIN airports
    ON flights.fairport = airports.code
    WHERE (airports.code = '?' OR airports.city='?')) AS matches
INNER JOIN airports
ON matches.tairport = airports.code
WHERE (airports.code = '?' OR airports.city = '?')

我已经尝试根据自己的情况修改上述查询,但也给了我空白的结果。

编辑:由于评论我调整了我的查询:

SELECT *
FROM Person
INNER JOIN Car on Car.PersonID = Person.PersonID 
WHERE BSNNummer = ".$_POST['phonenumber']."
AND Kenteken = ".$_POST['carregnumber']."

该查询仍然给我空白的结果,我已经按照注释中的说明进行了操作,看到了我做错了什么,但是不幸的是,看起来我仍然有一个不完整的查询。

snow_FFFFFF

我将把上面的一些评论放入此处的答案中,以便我可以提供更多的格式设置,等等。

一个格式正确的查询,您可以尝试执行以下操作:

SELECT
    Person.PersonID
    , Person.Phonenumber
    , Car.Carregnumber
FROM
    Person INNER JOIN
    Car ON Person.PersonID = Car.PersonID
WHERE
    Person.PhoneNumber = '123-456-7890'
AND Car.Carregnumber = '123456'

几个要点:

  1. 在选择中,并不总是必需的,但是用表前缀指定列是一个好主意。如果名称在表之间不冲突,则数据库只能处理名称,但是使用前缀future可以防止查询受到将来可能会破坏名称的某些更改的影响。

  2. 在JOIN中,我们必须指定如何联接两个表

  3. 另外,对于联接,由于我们需要匹配两个表中的值,因此将其设置为INNER JOIN。即使我们将其设为外部联接,但无论如何,将WHERE中的两个表都包括在内都将成为隐式内部联接。

  4. 在WHERE中,我们使用equals运算符(而不是LIKE)。我们关心的是特定的值,而不是某些与模式匹配的值。

  5. 同样在WHERE中,如果我们正在比较的字段是字符数据,则值必须用单引号引起来。我不知道您的数据类型,因此这可能不适用。

我认为您应该执行的操作-尝试使用硬编码值(如上面的值)构建查询并使其正常工作。然后,介绍您的变量值并从那里开始。最后,使用参数(如您的第二个示例中一样)来避免sql注入。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

结合“LIKE”、“NOT LIKE”和“OR”

来自分类Dev

MySQL Join和EXISTS结合使用

来自分类Dev

结合.Contains和.Like

来自分类Dev

结合使用Google Direction API和多个航点和模式

来自分类Dev

结合使用MySQL IN运算符和LIKE

来自分类Dev

PostgreSQL,将XML与LIKE和DISTINCT结合使用

来自分类Dev

结合使用WHERE子句和NATURAL JOIN SQL?

来自分类Dev

Microsoft Excel:将 OR 逻辑和多个范围与 COUNTIF 结合使用

来自分类Dev

MySQL,结合DISTINCT和JOIN

来自分类Dev

结合多个选择和更新

来自分类Dev

当与LEFT JOIN,WHERE和OR结合使用时,MySQL JOIN返回不相关的行

来自分类Dev

结合多个类和多个动画

来自分类Dev

结合使用.not()和.empty()

来自分类Dev

结合使用^和变量

来自分类Dev

与Swift结合使用多个replaceOccurrences()

来自分类Dev

将LIKE和IN结合用于Ebean

来自分类Dev

多个ON和JOIN

来自分类Dev

结合使用Cloudformation Join函数和CommaDelimitedList参数来构建IAM ARN

来自分类Dev

结合多列和多个几何图例

来自分类Dev

mysql php,使用LIKE和=组合过滤多个列

来自分类Dev

如何将Spring DelegatingFilterProxy与多个过滤器和Spring Security结合使用?

来自分类Dev

结合使用多个工作簿和选择的运行时错误1004

来自分类Dev

如何将grep与多个参数和不同的输出开关结合使用

来自分类Dev

结合使用验证Javascript和禁用提交按钮Javascript来防止提交多个表单

来自分类Dev

在Visual Studio中结合使用Linq和Marten查询多个参数

来自分类Dev

使用LEFT JOIN和UNION合并多个表

来自分类Dev

将SQL LIKE与变量PHP结合使用

来自分类Dev

结合使用SubscribeOn和翻新

来自分类Dev

结合使用Babel和JavaScript

Related 相关文章

热门标签

归档