jak wstawić wartości do tabeli z wybranego zapytania w postgresql?
<p>mam tabelę <code>items (item\_id serial, name varchar(10), item\_group int)</code> i tabelę <code>items\_ver (id serial, item\_id int, name varchar(10), item\_group int)</code>.</p><p>teraz chcę wstawić wiersz do <code>items\_ver</code> od <code>items</code>. czy jest do tego jakaś krótka składnia sql?</p><p>próbowałem z:</p><pre><code>insert into items\_ver values (select * from items where item\_id = 2); </code></pre><p>ale pojawia się błąd składniowy:</p><pre><code>error: syntax error at or near "select" line 1: insert into items\_ver values (select * from items where item... </code></pre><hr><p>próbowałem teraz:</p><pre><code>insert into items\_ver select * from items where item\_id = 2; </code></pre><p>działa lepiej, ale mam błąd:</p><pre><code>error: column "item\_group" is of type integer but expression is of type character varying line 1: insert into items\_ver select * from items where item\_id = 2; </code></pre><p>może to być spowodowane tym, że kolumny w tabelach są zdefiniowane w innej kolejności. czy kolejność kolumn ma znaczenie? miałem nadzieję, że postgresql pasuje do nazw kolumn.</p>
<p>kolejność kolumn ma znaczenie, więc jeśli (i tylko jeśli) kolejność kolumn jest zgodna, możesz na przykład:</p><pre><code>insert into items\_ver select * from items where item\_id=2; </code></pre><p>lub jeśli nie pasują, możesz na przykład:</p><pre><code>insert into items\_ver(item\_id, item\_group, name) select * from items where item\_id=2; </code></pre><p>ale poleganie na kolejności kolumn jest błędem, który może się zdarzyć (może się zmienić, podobnie jak liczba kolumn) - utrudnia także czytanie sql</p><p>nie ma dobrego „skrótu” - należy wyraźnie wymienić kolumny zarówno dla tabeli, do której wstawiasz, jak i zapytania, którego używasz dla danych źródłowych, np .:</p><pre><code>insert into items\_ver (item\_id, name, item\_group) select item\_id, name, item\_group from items where item\_id=2; </code></pre><p><em> dbfiddle <a href="http://dbfiddle.uk/?rdbms=postgres\_9.6&amp;fiddle=cec35746a8728841974621f20cc6aba0">tutaj</a> </em></p>
Z ograniczeniem, że klauzula warunek może być „coś”, to jesteś ograniczony do skanowania całą listę i stosując warunek.


Jeśli istnieją ograniczenia dotyczące klauzuli stan, wtedy można spojrzeć na organizowanie danych do bardziej efektywnie obsługiwać zapytań.


Na przykład, przykładowy kod z „byFirstLetter” słowniku nie pomaga w ogóle z „endswith” zapytania.


Więc tak naprawdę sprowadza się do tego, co pyta chcesz zrobić przed tymi danymi.


W bazach danych, problem ten jest ciężar „optymalizator zapytań”. W typowej bazy danych, jeśli masz bazę danych bez indeksów, oczywiście każde zapytanie będzie skan tabeli. Jak dodać indeksów w tabeli, optymalizator może użyć tych danych do bardziej wyrafinowanych zapytań planuje lepiej dostać się do danych. To w istocie problem, który opisujesz.


Gdy masz bardziej konkretny podzbiór typów kwerend następnie można zrobić lepszą decyzję, co struktura jest najlepsza. Ponadto, należy wziąć pod uwagę ilość danych. Jeśli masz listę 10 elementów każdy mniej niż 100 bajtów, skan wszystko może okazać się najszybciej, co można zrobić, ponieważ masz taką małą ilość danych. Oczywiście, że nie skaluje się do elementów 1M, ale nawet sprytnych technik dostępu nosić koszt w instalacji, konserwacji (jak utrzymanie indeksu) i pamięć.


**EDIT** , na podstawie komentarza


Jeśli jest to auto Nieukończenie, jeśli dane są statyczne, a następnie posortować je i używać przeszukiwanie binarne. Nie jesteś naprawdę dzieje się szybciej niż to.


Jeśli dane są dynamiczne, a następnie zapisać go w zrównoważonym drzewie, i szukać tego. To skutecznie wyszukiwanie binarne, a to pozwala zachować dodać dane losowo.


Coś jeszcze jest jakaś specjalność na tych pojęć. źle zrozumiałem problem, myślałem, że chcesz rozciągnąć w poziomie - mój błąd. 

dane mogą zostać w tabeli, ale dolne menu robiłbym już w nav>ul>li, również nie robiłbym breadcrumbsów u góry w tabeli. 
wracając już do problemu, będziesz miał trochę ciężko to zrobić. wydaje mi się, że najlepiej będz… druga pewnie jest dla sprawdzenia poprwanosci odpowiedzi, kucze nie pamietam dokladnie tych komend ale sprobuj skopjowac je z tej gotowej tabelki i ewentualnie cos pozmieniaj- a dokladniej t wspolrzedne pol zeby sie zgadzaly (wstaw tylko w pierwszych ramkach a reszte zlap za jeden rog i przeciagnij to ci sie skopiuje dla innych wynikow) Oznacza się tak, jakby się chciało dodać tekst do relacji. Klikamy na ikonę Aa, potem zaczynami pisać od znaku @ i bez spacji wpisujemy nazwę osoby. Instagram podrzuci nam podpowiedzi w formie zdjęć profilowych na dole. Można kliknąć we właściwe. ło panie. dobra. jeśli używasz entity framework, to wybierz wszystko, co jest w danej tabelce do zmiennej (i już masz dane 2 cache). sprawdzasz ile masz tam danych metodą count dostępną dla list. robisz tablicę dynamiczną i wrzucasz tam dane podzielone z listy. zwykły for od 0 do tego, ile zwróciło … Możesz spróbować:



```
<xsl:template match='*[namespace-uri() = ""]'>

```

Jeśli węzeł-set jest pusta lub ma URI przestrzeni nazw, pusty ciąg jest zwracany przez `namespace-uri`funkcję, która powinna osiągnąć co chcesz. **w dev c++: start>>uruchom i wpisz edit zamień tam znaki na takie jakie ciebie interesują następnie po skompilowaniu będziesz posiadał w konsoli znaki jakie cię interesują (ten sposób jest dla lamera)**   
  
oto mój kod na automatyczne zmiany znaków możesz go wykorzystać jeśli chcesz:  
  
#include <iostream>  
#include <fstream>  
#include <vector>  
#include <conio.h>  
  
char changewintodoschar( char & finput )  
{  
 switch( finput )  
 {  
 case 'ą': return( 'Ą' ); break;  
 case 'ć': return( '†' ); break;  
 case 'ę': return( '©' ); break;  
 case 'ł': return( '' ); break;  
 case 'ń': return( 'ä' ); break;  
 case 'ó': return( '˘' ); break;  
 case 'ś': return( '' ); break;  
 case 'ż': return( 'ľ' ); break;  
 case 'ź': return( '«' ); break;  
 case 'Ą': return( '¤' ); break;  
 case 'Ć': return( 'Ź' ); break;  
 case 'Ę': return( '¨' ); break;  
 case 'Ł': return( 'ť' ); break;  
 case 'Ń': return( 'ă' ); break;  
 case 'Ó': return( 'ŕ' ); break;  
 case 'Ś': return( '—' ); break;  
 case 'Ż': return( '˝' ); break;  
 case 'Ź': return( 'Ť' ); break;  
 default: return( finput ); break;  
 }  
}  
  
int main()  
{  
 std::fstream tplik;  
 std::string tfilename, twiersz;  
 std::cout << "podaj nazw© pliku: ";  
 getline( std::cin, tfilename );  
 tplik.open( tfilename.c\_str(), std::ios::in );  
 if( tplik.good() )  
 {  
 std::vector < std::string > trowlist;  
 while( getline( tplik, twiersz ) )  
 {  
 for( unsigned int i = 0; i < twiersz.length(); i++ ) twiersz[ i ] = changewintodoschar( twiersz[ i ] );  
   
 trowlist.push\_back( twiersz );  
 }  
 tplik.close();  
 tplik.clear();  
 tplik.open( tfilename.c\_str(), std::ios::out );  
 if( tplik.good() )  
 {  
 for( unsigned int i = 0; i < trowlist.size(); i++ ) tplik << trowlist[ i ] << std::endl;  
   
 tplik.close();  
 std::cout << "konwersja pliku zostaa ukoäczona!" << std::endl;  
 } else std::cout << "otworzenie pliku do zapisu nie powiodo si©!" << std::endl;  
   
 } else std::cout << "plik o podanej nazwie nie zosta znaleziony!" << std::endl;  
   
 getch();  
 return( 0 );  
} ```
$lasteight = mysqli_real_escape_string($_POST['lasteight']);

mysqli_query($con, "
    UPDATE inv SET
        other = 'log_itm'
    WHERE
        RIGHT(item_id, 8) = '$lasteight'
");

// OR

mysqli_query($con, "
    UPDATE inv SET other = 'log_itm' WHERE item_id LIKE '%". $lasteight ."'
");

``` Podejrzewam, że w ogólnym przypadku jest to trudne; XML Schema pozwala na niektóre dość dziwaczne konstrukcje typu. Nie jestem pewien, jak byś zrobił grup substytucji lub rozszerzenia ograniczeń rodzajów na przykład.


Jednak powinno to być możliwe, aby wbić coś razem dość szybko (zwłaszcza mapowanie z klas w System.Xml.Schema), który działa na 90% (tj sekwencji schematów i elementów wyboru z kilku prostych typów danych). Niech najpierw wprowadzą listę słówek.