这是一个简化的表结构:
TABLE products (
product_id INT (primary key, auto_increment),
category_id INT,
product_title VARCHAR,
etc
);
TABLE product_photos (
product_photo_id (primary key, auto_increment),
product_id INT,
photo_href VARCHAR,
photo_order INT
);
Run Code Online (Sandbox Code Playgroud)
一个产品可以有多张照片,每张产品的第一张产品照片(基于photo_order)是默认照片.
现在,我只需要产品详细信息页面上的所有照片,但在我列出多个产品的页面上,例如产品目录页面,我只想显示默认照片.
所以我要做的是查询产品列表,包括每个产品的默认照片.
这显然不起作用,它将返回所有照片与每张照片的产品信息重复:
SELECT p.*, ph.*
FROM products AS p
LEFT JOIN product_photos AS ph
ON p.product_id=ph.product_id
ORDER BY p.product_title ASC
Run Code Online (Sandbox Code Playgroud)
我需要弄清楚如何做这样的事情,但我不知道语法(或者是否可能)
SELECT p.*, ph.*
FROM products AS p
LEFT JOIN product_photos AS ph
ON p.product_id=ph.product_id **ORDER BY ph.photo_order ASC LIMIT 1**
ORDER BY p.product_title ASC
Run Code Online (Sandbox Code Playgroud)
编辑:我在下面的答案帮助下找到了解决方案,谢谢大家!
SELECT p.*, ph.* …
Run Code Online (Sandbox Code Playgroud) <style type="text/css">
div#foo {
background: #0000ff;
width: 200px;
height: 200px;
opacity: 0.30;
filter: alpha(opacity = 30);
}
div#foo>div {
color: black;
opacity:1;
filter: alpha(opacity = 100);
}
</style>
<div id="foo">
<div>Lorem</div>
<div>ipsum</div>
<div>dolor</div>
</div>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,不透明度div#foo
由子元素继承,导致文本几乎不可读.我认为说它是继承的是错误的,不透明度应用于父div而子节点是其中的一部分,因此尝试为子元素覆盖它不起作用,因为从技术上讲它们是不透明的.
在这种情况下,我通常只使用alpha png背景图像,但今天我想知道是否有更好的方法来使div的背景半透明而不影响内容.
我最近一直在考虑我的数据库索引,过去我只是非常挑衅地把它们作为事后的想法投入,并且如果它们是正确的甚至是帮助的话,从来没有真正考虑过.我读过相互矛盾的信息,有人说更多的索引更好,而其他索引也不好,所以我希望得到一些澄清,并在这里学到一点.
假设我有这个假设的表格:
CREATE TABLE widgets (
widget_id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
widget_name VARCHAR(50) NOT NULL,
widget_part_number VARCHAR(20) NOT NULL,
widget_price FLOAT NOT NULL,
widget_description TEXT NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我通常会为将要连接的字段和最常排序的字段添加索引:
ALTER TABLE widgets ADD INDEX widget_name_index(widget_name);
Run Code Online (Sandbox Code Playgroud)
现在,在一个查询中,例如:
SELECT w.* FROM widgets AS w ORDER BY w.widget_name ASC
Run Code Online (Sandbox Code Playgroud)
本widget_name_index
是用来排序的结果集.
现在,如果我添加搜索参数:
SELECT w.* FROM widgets AS w
WHERE w.widget_price > 100.00
ORDER BY w.widget_name ASC
Run Code Online (Sandbox Code Playgroud)
我想我需要一个新的索引.
ALTER TABLE widgets ADD INDEX widget_price_index(widget_price);
Run Code Online (Sandbox Code Playgroud)
但是,它会使用两个索引吗?据我了解,它不会......
ALTER TABLE widgets ADD INDEX …
Run Code Online (Sandbox Code Playgroud) 我正在一个用户可以浏览类别的目录网站上工作.类别可以包含其他类别和产品,产品可以属于多个类别.相关的数据库模式如下所示:
CREATE TABLE products (
product_id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
product_title VARCHAR(100) NOT NULL,
product_status TINYINT UNSIGNED NOT NULL
);
CREATE TABLE product_categories (
category_id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
parent_category_id INT UNSIGNED NOT NULL,
category_title VARCHAR(100) NOT NULL,
category_status TINYINT UNSIGNED NOT NULL,
category_order INT UNSIGNED NOT NULL
);
CREATE TABLE products_categories (
product_id INT UNSIGNED NOT NULL,
category_id INT UNSIGNED NOT NULL,
product_order INT UNSIGNED NOT NULL,
PRIMARY KEY(product_id, category_id)
);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我需要使用LIMIT …
我需要触发一次仅与domready事件类似的自定义事件,因为如果在事件发生后添加了新事件,则会立即触发它们.
这是为了某些代码在初始化某些数据和资源之前无法执行,所以我想做这样的事情:
// I am including a script (loadResources.js) to load data and other resources,
// when loadResources.js is done doing it's thing it will fire resourcesAreLoaded with:
window.fireEvent('resourcesAreLoaded');
window.addEvent('resourcesAreLoaded', function() {
// this is fine
});
$('mybutton').addEvent('click', function() {
window.addEvent('resourcesAreLoaded', function() {
// this is not fine, because resourcesAreLoaded has already fired
// by the time the button is clicked
});
});
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想resourcesAreLoaded
运行domready
,并在事件已经触发时立即执行代码:
window.addEvent('testIsReady', function() {
alert('firing test');
});
window.fireEvent('testIsReady');
window.addEvent('test', function() {
// this …
Run Code Online (Sandbox Code Playgroud) mysql ×3
sql ×2
background ×1
css ×1
database ×1
events ×1
indexing ×1
javascript ×1
mootools ×1
transparency ×1