CREATE OR REPLACE FUNCTION public.foo(str character varying)
RETURNS SETOF record
LANGUAGE plpgsql
AS $$
BEGIN
IF str = 'i' THEN
RETURN QUERY SELECT i, i*i FROM generate_series(1, 10) i;
ELSE
RETURN QUERY SELECT i, SQRT(i::float) FROM generate_series(1, 10) i;
END IF;
END;
$$
# select * from foo('i') as (key int, value int);
key | value
-----+-------
1 | 1
2 | 4
3 | 9
4 | 16
5 | 25
6 | 36
7 | 49
8 | 64
9 | 81
10 | 100
(10 rows)
# select * from foo('x') as (key int, value float);
key | value
-----+--------------------
1 | 1
2 | 1.4142135623730951
3 | 1.7320508075688772
4 | 2
5 | 2.23606797749979
6 | 2.449489742783178
7 | 2.6457513110645907
8 | 2.8284271247461903
9 | 3
10 | 3.1622776601683795
(10 rows)
$ppk =(string)$pickup_date[0]че ж 0-то? Уж скорее так:
$ppk =(string)$pickup_date["[]"]...
SELECT
t.str,
SUM(n)
FROM (
(SELECT str1 as str, COUNT(*) as n FROM tableName WHERE date BETWEEN '2021-01-01' AND '2021-12-31' GROUP BY str1)
UNION
(SELECT str2 as str, COUNT(*) as n FROM tableName WHERE date BETWEEN '2021-01-01' AND '2021-12-31' GROUP BY str2)
) as t
GROUP BY t.str
Задача - узнать кол-во потенциально полученных строк до их фактической выборки.
SELECT count(*) ...
Ну и - если допустимо - организовать pagination.
SELECT * FROM table
) выборка первых страниц происходит очень быстро (особенно через LIMIT). Но это легко сломать, например, сортировкой create table p (id serial primary key, val text);
create table c (id serial primary key, p_id int not null references p(id) on delete no action deferrable, val text);
insert into p (val) values ('a'), ('b');
insert into c (p_id, val) values (1, 'a1'), (1, 'a2'), (1, 'a3'), (2, 'b1');
begin;
set constraints all deferred;
delete from p where id = 2;
delete from c where p_id = 2;
commit;
CREATE OR REPLACE FUNCTION Foo(st TIMESTAMP, fin TIMESTAMP)
RETURNS TABLE (tstamp timestamptz, val float) AS $$
...
RETURN QUERY SELECT tstamp, val FROM hyptab WHERE tstamp >= st AND tstamp < fin;
END;
$$ LANGUAGE plpgsql;
serialize() обрабатывает все типы, кроме resource и некоторых типов object
<html>
<head>
<title>PHP is<? if ($a): ?> cool<? else: ?> not cool<? endif; ?></title>
</head>
<body>
<h1><?=$head1 ?></h1>
</body>
</html>
<?
на самом деле короче и удобнее, чем <?php
, но он, например, конфликтует синтаксически с тем же XML:<?xml version="1.0" encoding="UTF-8"?>
...
<html>
<head>
<link rel="icon" href="favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="style.css">
<?=$additional_meta ?? ""; ?>
</head>
<?php
$additional_meta = "<title>Как сделать meta tag для определенной страницы, если у меня шапка на нее подключается через include?</title>";
include("header.php");
?>
<body>
...