【问题标题】:How to find and show number of similar words in two different column within same table(MySql,PHP)如何在同一个表中的两个不同列中查找并显示相似词的数量(MySql,PHP)
【发布时间】:2014-12-14 14:37:03
【问题描述】:

我有表名relation_country,其中有三列 id、country_a 和 country_b 数据如下...

id   country_a   country_b
1    USA         France
2    Australia   USA
3    France      Australia
4    India       Rassia
5    Rassia      USA
6    France      Rassia
7    USA         India

在这里,我看到 USA 和 Rassia 建立了良好的关系。现在我想知道其中有多少人拥有相似的国家/地区。

say, Rassia has France & India
and USA has also France and India.

我可以查询显示,美国有(法国、澳大利亚、印度) 和 Rassia 有(法国和印度) 但我不能证明,这两个国家与(印度和法国)有相似的关系。

请帮忙。

【问题讨论】:

  • 你能发布你的代码来编辑它吗?
  • 拉西亚是一个国家吗?
  • 抱歉,应该是俄罗斯。(是的,我的意思是,它是一个国家)
  • @Abkarino,兄弟,我发布了一个查询。请看。
  • 您应该编辑您的帖子并添加代码而不是帖子作为答案。无论如何,我会调查它。

标签: php mysql


【解决方案1】:

是的,我为类似于 Rassia 的美国捐款

$USA1 = mysql_query("SELECT * FROM relation_country WHERE country_a= 'USA'");
$USA_numrows1 = mysql_num_rows($USA1);

if($USA_numrows1!=0){
    while($row1 = mysql_fetch_assoc($USA1)){
        $country_b =$row1['country_b'];
        echo $country_b."<br/>";            
    }
}

$USA2 = mysql_query("SELECT * FROM relation_country WHERE country_b= 'USA'"); $USA_numrows2 = mysql_num_rows($USA2);

if($USA_numrows2!=0){
    while($row2 = mysql_fetch_assoc($USA2)){
        $country_a =$row2['country_a'];
        echo $country_a."<br/>";            
    }
}

$russia1 = mysql_query("SELECT * FROM relation_country WHERE country_a= 'russia'"); $russia_numrows1 = mysql_num_rows($russia1);

if($russia_numrows1!=0){
    while($row3 = mysql_fetch_assoc($russia1)){
        $country_b1 =$row3['country_b'];
        echo $country_b1."<br/>";           
    }
}

$russia2 = mysql_query("SELECT * FROM relation_country WHERE country_b= 'russia'"); $russia_numrows2 = mysql_num_rows($russia2);

if($russia_numrows2!=0){
    while($row4 = mysql_fetch_assoc($russia2)){
        $country_a1 =$row4['country_a'];
        echo $country_a1."<br/>";           
    }
}   

【讨论】:

  • 第一件事,它只处理一半的数据。如果美国在第一列,您将不会处理。
【解决方案2】:

抱歉花了这么长时间我不得不将数据放在本地并测试它。

这是您需要的代码:

 (SELECT DISTINCT `country_a` FROM `relation_country` WHERE(`country_b` ='USA' AND (`country_a` IN (SELECT `country_a` FROM `relation_country` WHERE `country_b`= 'Russia') OR `country_a` IN (SELECT `country_b`  FROM `relation_country` WHERE `country_a`='Russia')))) UNION (SELECT DISTINCT `country_b` FROM `relation_country` WHERE(`country_a` ='USA' AND (`country_b` IN (SELECT `country_a` FROM `relation_country` WHERE `country_b`= 'Russia') OR `country_b` IN (SELECT `country_b`  FROM `relation_country` WHERE `country_a`='Russia'))))

采用格式化形式:

 (
 SELECT DISTINCT `country_a`
 FROM `relation_country`
 WHERE (
    `country_b` = 'USA'
    AND (
      `country_a`
      IN (

        SELECT `country_a`
        FROM `relation_country`
        WHERE `country_b` = 'Russia'
      )
      OR `country_a`
      IN (

        SELECT `country_b`
        FROM `relation_country`
        WHERE `country_a` = 'Russia'
       )
     )
   )
 )
 UNION (

 SELECT DISTINCT `country_b`
 FROM `relation_country`
 WHERE (
   `country_a` = 'USA'
   AND (
     `country_b`
     IN (

      SELECT `country_a`
      FROM `relation_country`
      WHERE `country_b` = 'Russia'
     )
    OR `country_b`
    IN (

     SELECT `country_b`
     FROM `relation_country`
     WHERE `country_a` = 'Russia'
    )
   )
  )
 )

注意将 UNION 用于 DISTINCT 值。

【讨论】:

  • 如果它适用于您,请投票并标记为已解决。如果您需要任何澄清,请继续问我。
  • 是的,它工作正常。再想一想兄弟,我看到这些结果不包含在表格中,我的意思是如何在页面(网站)中显示或者如何将您的代码作为 PHP 查询直接进入代码编辑器。正如我所说的我真的很新,而你给我的这些代码对我来说是全新的。
  • 兄弟,非常感谢。我确实转换为 php 并且效果很好。再次感谢您。
  • 我接受了你的回答。但是如何为你投票呢?我不知道。
  • 当某人的回答有帮助时,即使它不是您赞成的完整答案,请使用左侧数字上方的箭头。它可能需要 15 个声望点。
【解决方案3】:

如果我理解正确的话,这里是 sql 结果。只是为了使 sql 更易于理解,请创建以下视图。

"create view xcountry as select country_a,country_b from relationship_country union select country_b,country_a from relation_country;"

然后这个选择

"select country_b from xcountry where country_a = 'USA' and country_b in (select country_b from xcountry where country_a = 'Rassia');"

结果是两行;法国和印度。希望这会有所帮助。

【讨论】:

  • 这些代码似乎足够短,对我来说也是新的。你能解释一下如何使用(在 sql/php 中)吗?请。
  • 他加入表格两次:一次正确,一次反转,然后仅对一列使用正常选择。
  • 没错。视图只是对表的操作。它不存储数据,它只是以不同的方式看待它。通过将表与自身合并并反转列,您可以看到所有国家/地区都出现在第一列中。 “in”之后的选择创建了一组与 Rassia 有关系的所有国家。 “in”之前的选择获取所有与美国有关系的国家并在集合中。希望这会有所帮助。
  • 如果您认为这是一个更简单或更好的解决方案,请增加其价值。我需要积分:-)
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
相关资源
最近更新 更多