草庐IT

CATEGORY

全部标签

php - 如何使用面向对象代码减少 MySQL 查询的数量

举个简单的例子:我有产品。产品可以属于一个或多个类别,也可以属于一个或多个channel。所以我有一个用于产品、类别和channel的对象,以及它们的映射器和工厂类。我的方法#1是100%解耦;ProductFactory只是创建一个产品的实例。在Product类中,我有调用Category&ChannelFactory并根据需要存储对象的惰性实例化方法。这对于产品详细信息页面来说非常好,但是当涉及到产品列表时,我的查询次数会变得非常高,因为我必须为每个产品执行2个额外的查询,让我们面对现实吧:当我显示产品列表时在类别#2中,为每个产品实例化25次完全相同的类别是完全疯狂的。我的方法#

php - Zend_Db_Select 如何从子查询中选择(派生表)

如何使用Zend_Db_Select直接从子查询(派生表)中进行选择?看,我有5个具有相同结构的表,我想从中获取所有行,合并它们并删除重复项。我正在使用UNION自动删除重复项。问题是我之前为每个表添加了一个静态列,所以有一个列是不同的=>发生了重复。到目前为止,这是我的查询:SELECT`news_main`.*,'main'as`category`FROM`news_main`UNIONSELECT`news_politics`.*,'politics'as`category`FROM`news_politics`UNIONSELECT`news_society`.*,'socie

mysql - 构建复杂 SQL 查询的技巧

我已经开始使用PHP使用MySQL作为数据库进行编程了一段时间,我知道基本的SQL查询到包含最多两个表的简单JOINS。但是当我需要从3个或更多表中获取结果时,我陷入了困境。不管我多么努力,我还是发现自己迷路了。我到处搜索寻找关于如何处理复杂SQL查询的好教程,但没有找到任何解释如何去做的内容。大多数教程包含针对特定问题的解决方案,但它们没有解释如何着手解决问题的完美一般过程当涉及到复杂查询时,任何人都可以解释从头到尾的基本通用方法、如何构建查询等。例如:我有一个具有以下数据库结构的论坛:论坛类别:id|name|desc论坛主题:id|category_id|created_on|c

php - 一对多关系的 MySql JOIN 表结果

我有一个电子商务网站(MySql/PHP),我需要在其中获取两个连接表的一些结果。这是我所拥有的简化版本:Table:product[product_id,other_irrelevant_stuff,etc.]Table:product_to_category[product_id,category_id]产品可能有多个类别。我正在使用productpLEFTJOINproduct_to_categoryp2cON(p2c.product_id=p.product_id)。我需要获取分配了两个特定类别的产品的结果。显然,如果我使用p2c.category_id=1ANDp2c.cat

php - Laravel 4.2 多对多关系,使用其他默认 ID

我有2个模型,它们都没有使用表中的ID,而是使用字段internal_id。所以我定制了我的枢轴模式,但我在连接它们时遇到了困难。我收到错误:Generalerror:1215Cannotaddforeignkeyconstraint(SQL:altertable`seoshop_category_product`addconstraintseoshop_category_product_category_id_foreignforeignkey(`category_id`)references`seoshop_categories`(`internal_id`)ondeletecas

php - 基于父类别的 jQuery ajax 无限动态选择框

我有一个类别表:|category_id|category_name|parent_id|1|Electronics|0|2|MobilePhones|1|3|Computers|1|4|Iphone|2|5|SamsungGalaxy|2|6|AsusLaptop|3所以这个表可以为父类别存储无限的子类别。现在我想要实现的是,假设我选择电子产品,那么应该会出现另一个选择框,其中包含值列表MobilePhones和Computers。然后,如果我选择Computers,将出现另一个选择框,其中包含值列表AsusLaptop。我知道如何编写动态选择框的代码,但它不适用于无限子类别。这个应

php - 统计MySQL中的投票频率

我正在制作一个网站,用户可以在其中投票决定页面属于哪个类别。他们可以投票决定页面属于类别a、b、c或d。我需要从所有投票中找出MySQL行中最常出现的类别。每次用户提交投票时,都会提交他们投票的“类别”和“page_id”。到目前为止我有这个:SELECTpage_id,categoryFROMcategoriesGROUPBYpage_id我不能使用COUNT(*)WHEREcategory='a'然后为每个类别重复它,因为实际项目中还有更多类别。 最佳答案 如果您的表格看起来像这样:SELECT*fromcategories;+

SQL自连接查询?如何获取类别子类别?

我有一个数据库表,它具有以下形式catID|category|parentID1|firstCategory|null2|SubCategory1|13|SubCategory2|14|subSub1|3等等……有多个级别的类别。可以使用什么查询来获取以下格式的记录:catID|category1|firstCategory2|firstCategory/SubCategory13|firstCategory/SubCategory24|firstCategory/SubCategory2/subSub1类别ID将是最后一个类别的ID。如何编写查询以将类别连接到所有级别?不同类别的确切

使用索引优化 Mysql 查询

我的数据库架构由以下两个表组成:CREATETABLE`categories`(`id`bigint(20)NOTNULLauto_increment,`title`varchar(128)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;和CREATETABLE`articles`(`id`bigint(20)NOTNULLauto_increment,`title`varchar(512)NOTNULL,`body`longtext,`state`varchar(7)NOTNULL,`type`varchar(6)N

mysql - ORDER BY NULL 比 ORDER BY 列慢

根据MySQLdocumentation,在GROUPBY之后添加ORDERBYNULL应该“避免对结果进行排序的开销”。如果是这样,为什么下面的查询慢了大约5倍SELECTCOUNT(*)advert_count,category.nameFROMadvertLEFTJOINcategoryONadvert.category_id=category.category_idWHERE(advert.state_id=2)GROUPBYadvert.category_idORDERBYNULLLIMIT5不是用ORDERBYadvert_count查询吗?SELECTCOUNT(*)ad