Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查数据库中的多行_Php_Mysql - Fatal编程技术网

Php 如何检查数据库中的多行

Php 如何检查数据库中的多行,php,mysql,Php,Mysql,假设我有两列,大小和颜色,表的内容如下: sizes colors large red large green small green $q = "SELECT * FROM tablename WHERE sizes='large' and colors='green'"; 如果我想检索一条记录,它的大小表中有大,颜色表中有绿色,我会这样做: sizes colors large red large green small green $q = "SELECT * F

假设我有两列,大小和颜色,表的内容如下:

sizes  colors

large  red
large  green
small  green
$q = "SELECT * FROM tablename WHERE sizes='large' and colors='green'";
如果我想检索一条记录,它的
大小
表中有
,颜色
表中有
绿色
,我会这样做:

sizes  colors

large  red
large  green
small  green
$q = "SELECT * FROM tablename WHERE sizes='large' and colors='green'";

但是,如果我想检索
large
,如果它的行中同时有
红色
绿色
,该怎么办?如上所述,您似乎需要检查两行匹配的内容。自联接可能是最简单的方法:-

SELECT *
FROM SomeTable a
INNER JOIN SomeTable b
ON a.sizes = b.sizes
WHERE a.sizes = 'large'
AND a.colors = 'red'
AND b.colors = 'green'
避免使用联接,但这只返回大小(是否有其他要返回的列?)-


您似乎需要检查匹配的两行。自联接可能是最简单的方法:-

SELECT *
FROM SomeTable a
INNER JOIN SomeTable b
ON a.sizes = b.sizes
WHERE a.sizes = 'large'
AND a.colors = 'red'
AND b.colors = 'green'
避免使用联接,但这只返回大小(是否有其他要返回的列?)-


您似乎需要检查匹配的两行。自联接可能是最简单的方法:-

SELECT *
FROM SomeTable a
INNER JOIN SomeTable b
ON a.sizes = b.sizes
WHERE a.sizes = 'large'
AND a.colors = 'red'
AND b.colors = 'green'
避免使用联接,但这只返回大小(是否有其他要返回的列?)-


您似乎需要检查匹配的两行。自联接可能是最简单的方法:-

SELECT *
FROM SomeTable a
INNER JOIN SomeTable b
ON a.sizes = b.sizes
WHERE a.sizes = 'large'
AND a.colors = 'red'
AND b.colors = 'green'
避免使用联接,但这只返回大小(是否有其他要返回的列?)-



另一方面,这是糟糕的db设计。这应该是3张桌子。一张桌子的尺寸。一张桌子放颜色,然后一张中间的桌子放物品。如果这不起作用,那么试试这个,在这里,大小class='large'和颜色class='green'或颜色class='red'请重新设计您的设计并优化桌子之间的关系。如上所述,您需要将其分解为不同的表。另一方面,这是糟糕的数据库设计。这应该是3张桌子。一张桌子的尺寸。一张桌子放颜色,然后一张中间的桌子放物品。如果这不起作用,那么试试这个,在这里,大小class='large'和颜色class='green'或颜色class='red'请重新设计您的设计并优化桌子之间的关系。如上所述,您需要将其分解为不同的表。另一方面,这是糟糕的数据库设计。这应该是3张桌子。一张桌子的尺寸。一张桌子放颜色,然后一张中间的桌子放物品。如果这不起作用,那么试试这个,在这里,大小class='large'和颜色class='green'或颜色class='red'请重新设计您的设计并优化桌子之间的关系。如上所述,您需要将其分解为不同的表。另一方面,这是糟糕的数据库设计。这应该是3张桌子。一张桌子的尺寸。一张桌子放颜色,然后一张中间的桌子放物品。如果这不起作用,那么试试这个,在这里,大小class='large'和颜色class='green'或颜色class='red'请重新设计您的设计并优化桌子之间的关系。如前所述,您需要将其分解为不同的表。我认为他不希望在没有连接的情况下使用连接表,这将非常混乱。可以使用COUNT/have来完成,但这意味着返回“large”和2的计数,这看起来毫无意义(如果有更多的列,那么这可能是有意义的,但是我们需要定义这些列来自的行是红色行还是绿色行)。可以用变量来完成,但那会很糟糕。考虑到OP的代码,IN
子句中的
似乎是一条可行之路。我曾经想过,after.COUNT/HAVING with IN子句只有在OP只想保留大小(可能是颜色的聚合列,使用GROUP_CONCAT)时才有意义,但会丢失行中的任何其他信息(除非这两行共用,因此也可以放在GROUP BY子句中)1.我想他不想加入。如果没有加入,那会很混乱。可以使用COUNT/have来完成,但这意味着返回“large”和2的计数,这看起来毫无意义(如果有更多的列,那么这可能是有意义的,但是我们需要定义这些列来自的行是红色行还是绿色行)。可以用变量来完成,但那会很糟糕。考虑到OP的代码,IN
子句中的
似乎是一条可行之路。我曾经想过,after.COUNT/HAVING with IN子句只有在OP只想保留大小(可能是颜色的聚合列,使用GROUP_CONCAT)时才有意义,但会丢失行中的任何其他信息(除非这两行共用,因此也可以放在GROUP BY子句中)1.我想他不想加入。如果没有加入,那会很混乱。可以使用COUNT/have来完成,但这意味着返回“large”和2的计数,这看起来毫无意义(如果有更多的列,那么这可能是有意义的,但是我们需要定义这些列来自的行是红色行还是绿色行)。可以用变量来完成,但那会很糟糕。考虑到OP的代码,IN
子句中的
似乎是一条可行之路。我曾经想过,after.COUNT/HAVING with IN子句只有在OP只想保留大小(可能是颜色的聚合列,使用GROUP_CONCAT)时才有意义,但会丢失行中的任何其他信息(除非这两行共用,因此也可以放在GROUP BY子句中)1.我想他不想加入。如果没有加入,那会很混乱。可以使用COUNT/have来完成,但这意味着返回“large”和2的计数,这看起来毫无意义(如果有更多的列,那么这可能是有意义的,但是我们需要定义这些列来自的行是红色行还是绿色行)。可以用变量来完成,但那会很糟糕。考虑到OP的代码,IN
子句中的
似乎是一条可行之路。我曾经想过,after.COUNT/HAVING with IN子句只有在OP只想保留大小(可能是颜色的聚合列,使用GROUP_CONCAT)的情况下才有意义,但是会从t中丢失任何其他信息