Witam
Szanowni forumowicze mam bazę danych z 120000 rekordów potrzebuję pobrać dane 1000 dokumentów o określonym numerze.
Jak zbudować zapytanie
Jestem świeżakiem w temacie
select * from BAZA where KOLUMNA = okreslony_numer;
Ewentualnie napisz jak wyglądają tabele, co dokładnie chcesz pobrać, jak wygląda określony numer
i czy te 1000 dokumentów to jakaś część z tych które mają określony numer
- jeśli tak to jaka.
Masz rację powinem zacząć od przedatawienia jak wygląda tabela
Tabela o nazwie produktyzwrotne a w niej kolumny data dokumentu,nr_dokumentu, produkt,nazwa produktu ,ilość,użytkownik zatwierdzający
Takich wpisów jest ok 120000 potrzebuję wyjąć dla sztywno określonych nr dokumentów ilości .
Oczywiście twoje zapytanie spełniło by moje wymaganie pisząc
SELECT * FROM BAZA WHERE KOLUMNA = okreslony_numer or KOLUMNA = okreslony_numer lecz pisanie 1000 razy zajeło by mnóstwo czasu znacie może szybszy sposób
Select [data dokumentu],nr_dokumentu, produkt,[nazwa produktu],ilość,[użytkownik zatwierdzający]
FROM produktyzwrotne
WHERE nr_dokumentu >= 15000 and nr_dokumentu <=16000
W tym przykładzie pobierzesz 1k dokumentów od numer 150000 do 16000 włącznie.
musze pobrać konkretny numer np.
12345
5678
2345
2113
SELECT [DATA dokumentu],nr_dokumentu, produkt,[nazwa produktu],ilość,[użytkownik zatwierdzający]
FROM produktyzwrotne
WHERE nr_dokumentu IN(12345, 5678, 2345, 2113)
I teraz ... mówisz ze masz 1000 dok .. .ale ine chesz pisać z ręki ... ale musis zmiec jakiejś konkretne numery ... no to common ... jak sobie to wyobrażasz ?? Chyba że jest jakas metoda i zależność w tych numerach która można wyliczyć ? Albo można wybrać poprawne numery jakimś selectem z innej tabeli ? Albo nawet tej samej ?
Można tak, ale doczytaj o tabelach tymczasowych i tym jak działąją...
-- Tabela z zawartoscia widoczna per sesja albo transakcja sesji
CREATE GLOBAL TEMPORARY TABLE moj_filtr (
produkt_id NUMBER;
)
ON COMMIT DELETE ROWS;
-- wstawiamy id interesujacych produktów
insert into moj_filtr values (10005);
insert into moj_filtr values (10007);
insert into moj_filtr values (80007);
-- zapytanie + opcjonalnie hint dla optymalizatora, który podpowie mu
-- ile jest rekordów w tabeli tymczasowej, /*+ cardinality(f,3 ) */
select /*+ cardinality(f,3 ) */ p.* from produkty p, moj_filtr f where p.produkt_id=f.produkt_id;
-- czyszczenie tabeli na koniec transakcji, lub wycofanie zmian
commit/rollback;