Автоматический генерируют порядки сортировки с ОБНОВЛЕНИЕМ SQL

Вы можете получить текущий URL с помощью window.location.href, поэтому, если вы возьмете href на целевой странице, то у вас будет целевой URL.

Вы можете получить ссылку на URL с помощью document.referrer. Это также нужно захватить на целевой странице.

Я давно не пользовался jQuery, но я считаю, что синтаксис будет примерно таким:

// For this example I have assumed your fields have the IDs landingURL and referralURL.

$('#landingURL').val(window.location.href);

$('#referralURL').val(document.referrer);

Теперь, если целевая страница не совпадает с страницей формы, и вы необходимо передать эту информацию на страницу формы, используя только JavaScript в браузере, тогда я бы предложил вам захватить URL целевой страницы и URL реферала, как описано выше, и сохранить их либо в localStorage, либо sessionStorage.

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

// On the landing page:
localStorage.setItem('landingURL', window.location.href);
localStorage.setItem('referralURL', document.referrer);

// On the form page:
$('#landingURL').val(localStorage.getItem('landingURL'));
$('#referralURL').val(localStorage.getItem('referralURL'));

Надежда, которая помогает!

8
задан Anne Porosoff 4 February 2009 в 15:48
поделиться

3 ответа

Вы могли использовать [ROW_NUMBER][1] и раздел Item1ID

UPDATE t1
SET t1.SortOrder = t2.SortOrder 
FROM @t t1
INNER JOIN
(SELECT Item1ID, Item2ID, ROW_NUMBER() OVER
    (PARTITION BY Item1ID ORDER BY Item1ID, Item2ID) AS SortOrder
from @t) t2
ON t1.Item1ID = t2.Item1ID 
AND t1.Item2ID = t2.Item2ID
10
ответ дан 5 December 2019 в 15:26
поделиться

Теоретически, Вы могли сказать:

update mytable 
  set sortOrder = row_number() 
     over (partition by item1id order by item1id, item2id) from mytable

Однако это даст Вам сообщение об ошибке:

Msg 4108, Level 15, State 1, Line 1
Windowed functions can only appear in the SELECT or ORDER BY clauses.

Таким образом, на самом деле необходимо сделать это на двух шагах - сначала выбирают значения во временную таблицу и затем обновляют оригинал от временной таблицы.

Например:

select 
    item1ID, 
    item2ID, 
    row_number() 
        over (partition by item1id order by item1id, item2id) as sortOrder 
  into #tmp 
  from mytable

update mytable 
  set sortOrder = T.sortOrder 
  FROM 
    mytable M 
    inner join #tmp T 
        on M.item1ID = T.item1ID 
        AND M.item2ID = T.item2ID

drop table #tmp
0
ответ дан 5 December 2019 в 15:26
поделиться

Вы затрагиваете что-то фундаментальное о реляционной модели здесь. В базах данных в целом, нет такой вещи как внутреннее упорядочивание. Если Вы хотите вытащить упорядочивание из данных каждый раз, когда Вы смотрите на таблицу, необходимо указать тот порядок явно.

Таким образом в общем смысле, Вы просите невозможное. Вы не можете просто UPDATE таблица и получает автоматическое упорядочивание любой запрос, который Вы делаете на ней. Но в смысле запроса запросом, Вы могли всегда помещать"ORDER BY item1ID, sortOrder"в любом SELECT оператор Вы обращаетесь к таблице.

В SQL Server 2005 Вы могли записать представление и представить его Вашему клиенту, с помощью этого старого взлома:

SELECT TOP 100 PERCENT
    item1ID, item2ID, sortOrder  -- and all the other columns
FROM YourTable
ORDER BY item1ID, sortOrder;

Существуют способы сделать такое представление обновляемым, но необходимо будет исследовать это самостоятельно. Не слишком трудно сделать.

Если Вы никогда не собираетесь вставлять или изменять данные в этой таблице, и если Вы готовы повторно импортировать данные в таблицу снова, Вы могли бы определить свою таблицу с идентификационными данными, то вставить Ваши данные в таблицу в соответствующем порядке. Затем Вы всегда заказывали бы одним столбцом идентификационных данных. Это работало бы, если Ваш клиент всегда просматривает данные в программе, которая позволяет сортировать по отдельному столбцу. (BTW, никогда не используйте IDENTITY функция с этой целью. Это не будет работать.)

CREATE TABLE YourTable (
    SingleSortColumn  INT IDENTITY(1,1) NOT NULL,
    ...
);
INSERT INTO YourTable (
    item1ID, item2ID, sortOrder  -- everything except the SingleSortColumn
)
SELECT  -- all your columns
INTO YourTable
FROM yadda yadda yadda
ORDER BY item1ID, sortOrder;

Надежда это полезно. Извините, если я педантичен.

1
ответ дан 5 December 2019 в 15:26
поделиться
Другие вопросы по тегам:

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