Единственный ВЫБОР SQL, Возвращающий несколько строк из одной строки таблицы

На основе ответа @ Cristiana214

Следующий фрагмент PHP можно использовать для выполнения трюка https://twitter.com/ [screen_name] / profile_image? Size = normal работа на мобильном телефоне.

Из-за перенаправления твиттеров на мобильную версию сайта ссылки, такие как https://twitter.com/ [screen_name] / profile_image? Size = normal , прерываются на мобильных устройствах

Таким образом, скрипт получает ответ о перенаправлении (на аватар пользователя), извлекает адрес, а затем перенаправляет саму страницу

if (!isset(

На основе ответа @ Cristiana214

Следующий фрагмент PHP можно использовать для выполнения трюка https://twitter.com/ [screen_name] / profile_image? Size = normal работа на мобильном телефоне.

Из-за перенаправления твиттеров на мобильную версию сайта ссылки, такие как https://twitter.com/ [screen_name] / profile_image? Size = normal , прерываются на мобильных устройствах

Таким образом, скрипт получает ответ о перенаправлении (на аватар пользователя), извлекает адрес, а затем перенаправляет саму страницу

[110]

Так что это может быть доступ как twitteravatar.php? Id = twitter, который (во время написания ) перезагружается в https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg

Не красиво, но работает.

GET['id']))

На основе ответа @ Cristiana214

Следующий фрагмент PHP можно использовать для выполнения трюка https://twitter.com/ [screen_name] / profile_image? Size = normal работа на мобильном телефоне.

Из-за перенаправления твиттеров на мобильную версию сайта ссылки, такие как https://twitter.com/ [screen_name] / profile_image? Size = normal , прерываются на мобильных устройствах

Таким образом, скрипт получает ответ о перенаправлении (на аватар пользователя), извлекает адрес, а затем перенаправляет саму страницу

[110]

Так что это может быть доступ как twitteravatar.php? Id = twitter, который (во время написания ) перезагружается в https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg

Не красиво, но работает.

GET['id'] = 'twitter'; $urlget = curl_init(); curl_setopt($urlget, CURLOPT_URL, 'https://twitter.com/' .

На основе ответа @ Cristiana214

Следующий фрагмент PHP можно использовать для выполнения трюка https://twitter.com/ [screen_name] / profile_image? Size = normal работа на мобильном телефоне.

Из-за перенаправления твиттеров на мобильную версию сайта ссылки, такие как https://twitter.com/ [screen_name] / profile_image? Size = normal , прерываются на мобильных устройствах

Таким образом, скрипт получает ответ о перенаправлении (на аватар пользователя), извлекает адрес, а затем перенаправляет саму страницу

[110]

Так что это может быть доступ как twitteravatar.php? Id = twitter, который (во время написания ) перезагружается в https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg

Не красиво, но работает.

GET['id'] . '/profile_image?size=normal'); curl_setopt($urlget, CURLOPT_HEADER, true); curl_setopt($urlget, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($urlget); preg_match_all("/location: (.*)/", $res, $found); header('Location: ' . $found[1][0]);

Так что это может быть доступ как twitteravatar.php? Id = twitter, который (во время написания ) перезагружается в https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg

Не красиво, но работает.

6
задан John Doyle 23 July 2013 в 22:51
поделиться

7 ответов

Это работает в Oracle 10g:

select id, 'Value' || n as name,
       case n when 1 then value1 when 2 then value2 when 3 then value3 end as value
from (select rownum n
      from (select 1 from dual connect by level <= 3)) ofs, t

Я думаю, что в Oracle 9i были рекурсивные запросы? В любом случае, я почти уверен, что у него есть поддержка CASE, поэтому, даже если у него нет рекурсивных запросов, вы можете просто сделать вместо этого «(выберите 1 из двойного объединения, все выберите 2 из двойного объединения, все выберите 3 из двойного)». Злоупотребление рекурсивными запросами является более общим для Oracle. (Однако использование объединений для генерации строк переносимо на другие БД)

4
ответ дан 8 December 2019 в 16:09
поделиться

UNION ALL, как предлагали другие, вероятно, лучший выбор в SQL. Вы также можете рассмотреть возможность решения этой проблемы во внешнем интерфейсе, в зависимости от ваших конкретных требований.

0
ответ дан 8 December 2019 в 16:09
поделиться

Вы можете сделать это так, но это не очень красиво:

SELECT id,'Value 1' AS name,value1 AS value FROM mytable
UNION
SELECT id,'Value 2' AS name,value2 AS value FROM mytable
UNION
SELECT id,'Value 3' AS name,value3 AS value FROM mytable
2
ответ дан 8 December 2019 в 16:09
поделиться

Если вы используете SQL Server 2005+, вы можете использовать UNPIVOT

CREATE TABLE #tmp ( ID int, Value1 int, Value2 int, Value3 int)

INSERT INTO #tmp (ID, Value1, Value2, Value3) VALUES (1, 2, 3, 4)

SELECT
    *
FROM
    #tmp

SELECT
    *
FROM
    #tmp
UNPIVOT
(
    [Value] FOR [Name] IN (Value1, Value2, Value3)
) uPIVOT

DROP TABLE #tmp
0
ответ дан 8 December 2019 в 16:09
поделиться

Объединение трех операторов select должно помочь:

SELECT ID, 'Value1', Value1 AS Value
FROM TABLE
UNION
SELECT ID, 'Value2', Value2 AS Value
FROM TABLE
UNION
SELECT ID, 'Value3', Value3 AS Value
FROM TABLE
2
ответ дан 8 December 2019 в 16:09
поделиться

Дайте шанс объединению .

select ID, 'Value1' as Name, Value1 as Value from table_name union all
select ID, 'Value2', Value2 as Value from table_name union all
select ID, 'Value3', Value3 as Value from table_name

order by ID, Name

использование union all означает, что сервер не будет выполнять отдельный (что подразумевается в операциях union ). Это не должно иметь никакого значения для данных (так как ваш ID должен НАДЕЖДАТЬ быть другим), но это может немного ускорить его.

9
ответ дан 8 December 2019 в 16:09
поделиться

Для Sql Server рассмотрите UNPIVOT как альтернативу UNION:

SELECT id, value, colname
FROM #temp t
UNPIVOT (Value FOR ColName IN (value1,value2,value3)) as X

Это также вернет имя столбца. Я не уверен, для чего используется X, но вы не можете его пропустить.

-1
ответ дан 8 December 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: