【问题标题】:I want to make a join betwen two tables [closed]我想在两个表之间进行连接[关闭]
【发布时间】:2015-04-15 10:46:00
【问题描述】:

我有两张表,一张是变量,另一张是固定的。

$tab 结构

id  int(11)  autoincrement
cod     text         
den_material    text         
furnizor    varchar(255)         
cant_reper  varchar(255)         
lg  varchar(255)    No       
cod_furnizor    varchar(255)         
obs     tinytext         
data    date    

命名器表结构

nid      int(11)    autoincrement    
sap      text            
denumire     text            
grupa    varchar(255)            
unitate 

我想加入他们以在 $tab 中生成一个具有以下结构的单个表

id  int(11)  autoincrement
cod     text        --> to get datas from nomenclator table sap as column 
den_material    text    -> to get datas from nomenclator table denumire as column    
furnizor    varchar(255)         
cant_reper  varchar(255)         
lg  varchar(255)    No       
cod_furnizor    varchar(255)         
obs     tinytext         
data    date

完整的源代码

 session_start();

// preserve selection for ajax call
if (!empty($_POST["tables"]))
{
    $_SESSION["tab"] = $_POST["tables"];
    $tab = $_SESSION["tab"];
}

// update on ajax call
if (!empty($_GET["grid_id"]))
    $tab = $_SESSION["tab"];

if (!empty($tab))
{
    $g = new jqgrid();

    // set few params
    $grid["caption"] = "Comanda : '$tab'";
    $grid["autowidth"] = true;
    $grid["multiselect"] = false; // allow you to multi-select through checkboxes
$grid["form"]["position"] = "center";
$grid["view_options"] = array("width"=>"500");



    $g->select_command = "SELECT t.* FROM `$tab` AS t, `nomenclator` AS n
WHERE n.`sap` = t.`cod` OR n.`denumire` = t.`den_material`;";



    $g->set_options($grid);

    $g->set_actions(array(  
                        "add"=>true, // allow/disallow add
                        "edit"=>true, // allow/disallow edit
                        "delete"=>true, // allow/disallow delete
                        "view"=>true, // allow/disallow delete
                        "rowactions"=>true, // show/hide row wise edit/del/save option
                        "search" => "advance", // show single/multi field search condition (e.g. simple or advance)
                        "showhidecolumns" => false
                    ) 
                );




    // set database table for CRUD operations

    $g->table = $tab;


    $col = array();
$col["title"] = "sap";
$col["name"] = "sap"; 
$col["width"] = "10";
$col["editable"] = true;
$col["hidden"] = true;
$cols[] = $col;  



$col = array(); 
    $col["index"] = "furnizor";
    $col["title"] = "Comerciale asigurate de: ";
    $col["editable"] = true;
    $col["edittype"] = "select"; // render as checkbo
$col["editoptions"] = array("value"=>'Ramira:Ramira;Beneficiar:Beneficiar', "multiple" => true);
    $cols[] = $col;

        $col = array();
$col["index"] = "den_material";
$col["title"] = "Denumire Material";
$col["name"] = "denumire"; 
$col["editable"] = true;
$col["width"] = "80";
$col["searchoptions"] = array("value" => $str, "separator" => ":", "delimiter" => ";");
$col["search"] = true;
$col["formatter"] = "autocomplete"; // autocomplete
$col["formatoptions"] = array(  "sql"=>"SELECT t.* 
FROM `$tab` AS t, `nomenclator` AS n
WHERE n.`sap` = t.`cod` OR n.`denumire` = t.`den_material`;",
                                "search_on"=>"name", 
                                "update_field" => "sap");
$cols[] = $col; 

【问题讨论】:

  • 你的意思是说你想将一个php变量加入到数据库中的一个表中?
  • 你说“这会帮助 [你] 加薪”,所以我会建议你学习人们付钱给你做的工作。
  • @MaoTseTongue 说了什么。你所做的基本上是通过为你不知道的事情获得报酬来偷钱。学习技术,不要乞求代码sn-ps。如果你学不来,找一份适合你技能的工作。
  • 投票结束,因为这是一个“为我编写代码”的问题。它也是任意数量的“我如何加入”问题的重复。
  • 我不是程序员,我在物流部门工作,我们的 IT 不懂编程,我尝试了几次,但我做不到,这就是我寻求帮助的原因。

标签: php mysql sql database join


【解决方案1】:

下面的查询将得到行,这两个数据在 $tab 中的数据与在 nomenclator 中的数据相同。

SELECT t.* 
FROM `$tab` AS t, `nomenclator` AS n
WHERE n.`sap` = t.`cod` AND n.`denumire` = t.`den_material`;

下面的查询将获取行,这些行在 $tab 中的任何数据都与 nomenclator 中的相同。

SELECT t.* 
FROM `$tab` AS t, `nomenclator` AS n
WHERE n.`sap` = t.`cod` OR n.`denumire` = t.`den_material`;

尝试上述查询。如果您没有得到想要的结果集,请在此处回复

【讨论】:

  • 无法执行查询。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'LIMIT 1 OFFSET 0' 附近使用正确的语法 - SELECT t.* FROM test123 AS t, nomenclator AS n WHERE n.sap = t.cod 或 n.denumire = t.den_material;限制 1 偏移量 0
  • 我在这里贴的是完整的源代码
  • 你应该删除';'在t.den_material 之后
  • 谢谢,但我在自动完成方面遇到问题,请通过 radusacalaseni [at] gmail [dot] com 向我发送电子邮件,以向您发送完整的源代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
相关资源
最近更新 更多