Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
SELECT t.field, t.field1, ... FROM tbl t INNER JOIN table1 t1 ON t1.id=t.id INNER JOIN table2 t2 ON t2.id=t1.id WHERE 1=1 AND t.value='foo' AND t1.value='bar' GROUP BY t.field ORDER BY t.field
WHERE '
t.value='foo'
AND
t1.value='bar'
SELECT t.field, t.field1, ... FROM ( SELECT t_in.field, t_in.field1, ... FROM t_in WHERE t_in.id = 100 GROUP BY t.field ORDER BY t.field ) AS tbl_in INNER JOIN table1 t1 ON t1.id=t.id INNER JOIN table2 t2 ON t2.id=t1.id WHERE 1=1 AND t.value='foo' AND t1.value='bar' GROUP BY t.field ORDER BY t.field
WHERE
t.value='foo'
AND t1.value='bar'
SELECT ... FROM ...
WHERE
if(def condition1){ f1='condition1' }
if(def condition2){ f2='condition2' }
SELECT ... FROM ...
WHERE 1=1
if(def condition1){ AND f1='condition1' }
if(def condition2){ AND f2='condition2' }
SELECT field
, field1
, field2
...
SELECT polls.`uid`, polls.`valid_days`
FROM yr_polls as polls
LEFT JOIN yr_polls_choice as choice
ON polls.uid = choice.poll_id
WHERE polls.uid = p_id
Или
UPDATE yr_polls_choice as pc
SET pc.`choice` = 'aaaa'
WHERE pc.`uid` = 1;
SELECT
field1, , ..., fieldN
fieldN+1, ... fieldN+M
FROM table AS t1
LEFT JOIN table2 AS t2 ON t2.field = t1.field
LEFT JOIN table3 AS t3 ON t3.field = t1.field AND t3.field2 = t2.fieldX
WHERE t3.field = 'something' AND t1.field = 'nothing' AND
t2.field = 'anything'
ORDER BY t1.id DESC
GROUP BY t2.field
LIMIT 0, 10SELECT t1.row1, t1.row2, t1.row3 FROM table1 AS t1 INNER JOIN table2 AS t2 ON t2.row1 = t1.row1 INNER JOIN table3 AS t3 ON t3.row1 = t2.row1 AND t3.row2 = t2.row2 WHERE t1.row1 = x AND t1.row2 = y ORDER BY t1.row3
$query = $db->select()
->from('apartaments')
->join(
'apartaments_types',
'apartaments.atype = apartaments_types.atype',
array(
'atype_name'
)
)
->join(
'apartaments_pricetype',
'apartaments.pricetype = apartaments_pricetype.id',
array(
'pricetype_text' => 'apartaments_pricetype.description'
)
)
->where('uid = ?', $id)
->where('df = ?', 0)
;
// Вариант 1 result = long_long_long_expression1 + long_long_long_expression2 * long_long_long_expression3; // Вариант 2 result = long_long_long_expression1 + long_long_long_expression2 * long_long_long_expression3;
// Вариант 2.1
result = long_long_long_expression1
+ long_long_long_expression2
* long_long_long_expression3;
Т.е. я понимаю когда хочется явно указать порядок поиска при множественных связях, но
#Gets Nike's products SELECT DISTINCT types.* FROM ( SELECT products.id, products.name, products.item, products.brand, products.sex, products.season FROM products INNER JOIN display ON display.item = products.season AND MID( IF( LENGTH(display.status) < 3, CONCAT( REPEAT( 0, 3 - LENGTH(display.status) ), display.status ), display.status ), 1, 1 ) = 1 INNER JOIN types ON types.brand = products.brand AND types.sex = products.sex AND types.season = products.season WHERE display.page = 289 LIMIT 100 ) AS activeProducts INNER JOIN types ON types.id = activeProducts.sex WHERE types.brand = 'nike'
SELECT t1.a, t1.b, t3,t, t3.s
t2.c, t2.d, t3.h
FROM db.table1 AS t1
INNER JOIN db.table2 AS t2 ON t1.g=t2.j
INNER JOIN db.table3 AS t2 ON t3.g=t2.l
WHERE t1.u > 10
AND t2.u > 10
AND t3 < 10
GROUP BY t2.a ASC
ORDER BY t1.a DESC
LIMIT 10
SELECT `t`.`field` , `t`.`field1` `another_field` FROM `table` `t` INNER JOIN `table1` `t1` ON (`t1`.`id` = `t`.`id`) LEFT JOIN `table2` `t2` ON (`t2`.`id` = `t1`.`id`) WHERE `t`.`value` = 'foo' AND `t1`.`value` = 'bar' GROUP BY `t`.`field` ORDER BY `t`.`field` DESC
Форматирование длинных SQL-запросов