GVKun编程网logo

PHP-具有和不具有关系的MySQL选择行(php只能跟mysql数据库进行联合编程)

26

对于想了解PHP-具有和不具有关系的MySQL选择行的读者,本文将是一篇不可错过的文章,我们将详细介绍php只能跟mysql数据库进行联合编程,并且为您提供关于Android:创建具有关系的SQLit

对于想了解PHP-具有和不具有关系的MySQL选择行的读者,本文将是一篇不可错过的文章,我们将详细介绍php只能跟mysql数据库进行联合编程,并且为您提供关于Android:创建具有关系的SQLite数据库、css3 – 如何从具有和不具有背景大小的文件夹创建精灵(使用Compass)、mysql – 从具有递归关系的两个表中获取数据、mysql-具有多态关系的Laravel 5只读视图模型的有价值信息。

本文目录一览:

PHP-具有和不具有关系的MySQL选择行(php只能跟mysql数据库进行联合编程)

PHP-具有和不具有关系的MySQL选择行(php只能跟mysql数据库进行联合编程)

假设我有2个mysql表“ movies”和“ seen”

如果用户已经看过电影,则“ seen”表中有一条记录,其中包含他的用户ID和movieID

我必须打印所有电影,然后如果用户已经看过电影“已经看过”的电影,否则就“要观看”.

目前,我对2个单独的查询使用PHP:

<?PHP
$res = MysqL_query( "SELECT * FROM movies" );
while( $row = MysqL_fetch_assoc( $res ) ) {
  echo $row['movie_name'];
  $res2 = MysqL_query( "SELECT * FROM seen WHERE userID = '$uid' AND movieID = '$row[id]' LIMIT 1" );
  if( MysqL_num_rows( $res2 ) == 1 ) { echo "already watched"; } else { echo "to watch"; }
}

有一个方法可以通过一个查询做到这一点?

在“ movies.id = seen.movi​​eID”上使用JOIN时,它仅打印经过搅动的电影,而在“ WHERE movie.id NOT IN(SELECT seen.movi​​eID FROM FROM seen WHERE seen.userID =’$uid’)”中,它仅打印不显示的电影.看..

解决方法:

在这种情况下,您可以从LEFT JOIN使用,在左联接中,您可以看到第一个数据在表上,而第二个数据不在表上.

SELECT * FROM movies LEFT JOIN seen ON movies.id = seen.movieID

如果看到的表中的数据在结果数据上,那么如果没有用户未看到,则存在.

您也可以在解决方案中使用UNION并合并查询

Android:创建具有关系的SQLite数据库

Android:创建具有关系的SQLite数据库

我正在尝试创建一个应用程序,该应用程序需要具有一对多关系的两表sqlite数据库.

基本上,第一个表将允许用户创建一个雇员,当他们点击该雇员时,将带他们进入第二个活动,该活动将允许用户添加存储在第二个表中的该雇员的多个电话号码.

关于创建具有两个表和一个关系的数据库,我真的不知道从哪里开始.我似乎遇到的每个示例都仅消除了一个表的数据库连接.

对于任何演示这种功能的帮助/建议/教程,我将不胜感激.

解决方法:

本教程使我成功创建DAO类实现:http://www.vogella.de/articles/AndroidSQLite/article.html

虽然没有强制的关系,但我听说这对性能不利,所以我停止寻找.

最后,我有了一个DBHandler来跟踪用于创建/更新表的数据库版本.
我也有DBOpenHelper来帮助打开/关闭连接.
因为我有两个表(出于示例目的,我将坚持使用Employee和Contact),所以我有一个每种类型的DAO都包含DBOpenHelper.

希望这可以帮助 :)

css3 – 如何从具有和不具有背景大小的文件夹创建精灵(使用Compass)

css3 – 如何从具有和不具有背景大小的文件夹创建精灵(使用Compass)

我想在两种不同的场景中使用Compass生成的图标精灵.

>使用原始大小的图标.
>使用与使用CSS3属性background-size的较小版本相同的图标.

我先这样做:

$logo-spacing: 20px;
@import "logo/*.png";
@include all-logo-sprites;

现在我可以使用一般创建的CSS类,如.logo-twitter等.

两个实现我可以使用的第二个结果(darren131 / gist:3410875 – resize sprites in Compass):

@mixin resize-sprite($map,$sprite,$percent) {
  $spritePath:    sprite-path($map);
  $spriteWidth:   image-width($spritePath);
  $spriteHeight:  image-height($spritePath);
  $width: image-width(sprite-file($map,$sprite));
  $height: image-height(sprite-file($map,$sprite));

  @include background-size(ceil($spriteWidth * ($percent/100)) ceil($spriteHeight * ($percent/100)));
  width: ceil($width*($percent/100));
  height: ceil($height*($percent/100));
  background-position: 0 floor(nth(sprite-position($map,$sprite),2)  * ($percent/100) );
}

.my-other-div-with-small-logos {
    .logo-twitter {
        $spriteName: twitter;
        $percentage: 40;

        @include resize-sprite($logo-sprites,$spriteName,$percentage);
    }
}

但如果我有大约30个徽标,我需要为每个精灵类手动重复这个.

是否可以导入文件夹两次,一次是原始大小,另一次是backround-size属性?
或修改上述方法以在另一个< div class =“my-other-div-with-small-logos”>内自动创建所有类.图标应该显得更小?

或者我在这里想错了方向?

解决方法

这样做.它迭代整个地图:

@each $sprite in sprite_names($logo-sprites) {
    .logo-#{$sprite} {
        @include resize-sprite($logo-sprites,40);
    }
}

这有助于:Way to iterate over sprites in a map

在没有加载另一个生成的精灵图像的情况下缩小现代浏览器中的精灵是很棒的.如果徽标有时是50px,但也应该是其他地方的20px,这非常好.

mysql – 从具有递归关系的两个表中获取数据

mysql – 从具有递归关系的两个表中获取数据

我有一个MySQL 5.1数据库,用于PHP应用程序后面跟踪权限以及需要发布给组织中具有不同职位的员工的其他项目.要跟踪某个职位的特权,我正在使用此表格:

@H_301_5@MysqL> desc position_privs;
+--------------+---------+------+-----+---------+-------+
| Field        | Type    | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+-------+
| position     | int(11) | NO   |     | NULL    |       |
| priv         | int(11) | NO   |     | NULL    |       |
| date_added   | int(11) | NO   |     | 0       |       |
| date_removed | int(11) | YES  |     | NULL    |       |
+--------------+---------+------+-----+---------+-------+
4 rows in set (0.00 sec)

position指的是位置表中的id列,priv指的是privs表中的id列.有些职位还继承了其他职位的特权,而这些职位又可以继承其他职位,等等.我有这个表:

@H_301_5@MysqL> desc position_inherits;
+--------------------+---------+------+-----+---------+-------+
| Field              | Type    | Null | Key | Default | Extra |
+--------------------+---------+------+-----+---------+-------+
| position           | int(11) | NO   |     | NULL    |       |
| inherit_privs_from | int(11) | NO   |     | NULL    |       |
| date_added         | int(11) | NO   |     | 0       |       |
| date_removed       | int(11) | YES  |     | NULL    |       |
+--------------------+---------+------+-----+---------+-------+
4 rows in set (0.00 sec)

如果继承总是只有一个层次,我可以通过一个简单的JOIN来做到这一点,但是我很难处理从一个位置继承的位置,而这个位置又从另一个位置继承.

有没有一种使用MysqL的方便的方法,或者我应该坚持使用SELECT * FROM $table并在应用程序代码中执行此操作?

解决方法:

坏消息

MysqL不支持递归数据或表结构.它也不支持递归sql.

好消息

有希望.我已经编写了一些关于如何检索数据层次结构的存储函数

> 2011年10月24日:Find highest level of a hierarchical field: with vs without CTEs
> 2012年12月10日:MySQL: Tree-Hierarchical query

警告

>你必须对你的表实现这一点.
>您还需要确保以树形式而不是图形形式输入数据.

> https://en.wikipedia.org/wiki/Tree_(data_structure)
> http://wiki.answers.com/Q/DIFFERENCE_between_GRAPH_and_TREE_IN_DATA_STRUCTURES
> https://stackoverflow.com/a/7707983/491757

>对于position_inherits表中没有父级的任何行,只需将该行的inherit_privs_from设置为零(0).这样,您就可以建立根位置.

mysql-具有多态关系的Laravel 5只读视图模型

mysql-具有多态关系的Laravel 5只读视图模型

有时,我们使用MySql视图来组织相关表,以使其更易于搜索和排序.例如,如果您有带有状态和来源的帖子.

Post
    subject
    body
    source_id
    status_id

Status
    id
    label
    other_field

Source
    id
    label
    other_field


View
   create view read_only_posts as
   SELECT statuses.label as status, sources.label as source, posts.*
   from posts
   left join statuses on statuses.id = posts.status_id
   left join sources on sources.id = posts.source_id

然后我们有Post模型和一个额外的模型:

// Post.PHP
class Post extends Model
{
    //
}

// ReadOnlyPost.PHP
class ReadOnlyPost extends Post
{
    protected $table = 'read_only_posts';
}

很好,因为现在您可以直接在状态或来源上对字符串进行排序或过滤,而不是ID的字符串.您还可以包括“ other_field”.

但是我们有一个需要帮助的问题.如果您在Posts上具有多态的多对多关系,则无法在只读版本上使用它.例如,如果您具有多态标记:

// Post.PHP Model
public function tags()
{
    return $this->morphToMany(Tag::class, 'taggable');
}

问题是,当您过滤具有特定标签的帖子(使用只读模型)时,将得到如下所示的sql:

select count(*) as aggregate from read_only_posts where exists (select * from tags inner join taggables on tags.id = taggables.taggable_id where read_only_posts.id = taggables.taggable_type and taggables.taggable_type = ‘read_only_posts’ and label = ‘test’)

如您所见,问题是taggables.taggable_type =’read_only_posts’.

我找不到一种方法来覆盖模型的变形类型. (我使用的是laravel 5.4,而MorphClass不再存在).变形贴图是一个关联数组,因此您不能这样做:

// AppServiceProvider
public function boot()
{
    Relation::morphMap([
        'posts' => Post::class,
        'posts' => ReadOnlyPost::class, <--- Can't do this

我的愚蠢解决方法是,当我将标签附加到帖子时,我也将其附加到ready_only_posts,这有点混乱.

其他人是否将Views用于只读模型?任何人都有更好的方法来覆盖特定模型的多对多多态类型吗?

解决方法:

查看代码,我相信这可能有效.

class ReadOnlyPost extends Posts
{
    public function getMorphClass() {
         return 'posts';
    }
}

从理论上讲,您应该需要在morph映射中列出Posts模型/表,因为系统将基于命名自动为其生成“ posts”类型.

关于PHP-具有和不具有关系的MySQL选择行php只能跟mysql数据库进行联合编程的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android:创建具有关系的SQLite数据库、css3 – 如何从具有和不具有背景大小的文件夹创建精灵(使用Compass)、mysql – 从具有递归关系的两个表中获取数据、mysql-具有多态关系的Laravel 5只读视图模型的相关信息,请在本站寻找。

本文标签: