U.来自这个Mysql选择表示例?

时间:2015-02-09 03:16:31

标签: mysql select

我在线看到了一个教程。但是当我选择桌子时,我不明白U.的意思。它还将U和T隐藏在表名中。 U和T来自哪里?为什么编码器放U和T.请澄清我,谢谢! 表没有这样的名字。美国是否意味着加入?或者是其他东西? 我把这个例子放在下面。

CREATE TABLE phpro_tags (
  tag_id INT(11) NOT NULL auto_increment,
  tag_name varchar(30) NOT NULL,
  PRIMARY KEY  (tag_id),
  UNIQUE KEY tag_name (tag_name)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE phpro_tag_types (
  tag_type_id INT(1) NOT NULL auto_increment,
  tag_type_name varchar(30) NOT NULL,
  PRIMARY KEY (tag_type_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE phpro_tag_targets (
  tag_target_id INT(11) NOT NULL auto_increment,
  tag_id INT(11) NOT NULL ,
  tag_target_name varchar(30) NOT NULL,
  tag_target_url varchar(255) NOT NULL,
  tag_type_id INT(1) NOT NULL,
  PRIMARY KEY  (tag_target_id),
  FOREIGN KEY (tag_id) REFERENCES phpro_tags(tag_id) ON DELETE CASCADE,
  FOREIGN KEY (tag_type_id) REFERENCES phpro_tag_types(tag_type_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

<?php
    $tag_target_url = 'http://phpro.org/tutorials/Managing-Hierarchical-Data-with-PHP-and-MySQL.html';

    try
    {
        include 'db.class.php';

        $sql = "
            SELECT U.*
            FROM phpro_tag_targets U
            JOIN phpro_tag_targets T
            WHERE
                    U.tag_id = T.tag_id
                AND T.tag_target_url = :tag_target_url
            GROUP BY tag_target_url";

        $stmt = db::getInstance()->prepare($sql);
        $stmt->bindParam(':tag_target_url', $tag_target_url);
        $stmt->execute();
        $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
        /*** loop over the array and create the listing ***/
        $msg = '<ul>';
        foreach($res as $val)
        {
            $msg .= '<li><a href="'.$val['tag_target_url'].'">'.$val['tag_target_name'].'</a></li>'."\n";
        }
        $msg .= '</ul>';
    }
    catch(Exception $e)
    {
        $msg = 'Unable to process tag type';
    }
?>

<?php echo $msg; ?>

2 个答案:

答案 0 :(得分:1)

更好的答案是U和T是在查询的FROM部分中定义的别名。然后,您可以将它们用作U.columnname或T.columnname来缩短您的输入。在这种情况下,需要别名,因为它们将表连接到自身。

答案 1 :(得分:0)

正如您的问题所关注的那样,“U”是从中检索数据的表的名称。并且“U. *”表示检索表“U”的每一列。它有时用作U.Id,U.name。