• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

mysql - dwa seelecty union all .- problem

VPS Starter Arubacloud
0 głosów
332 wizyt
pytanie zadane 25 listopada 2018 w SQL, bazy danych przez niezalogowany

Hej, próbuje utworzyc zapytanie, które wyciągnie mi wszystkie dane z tabeli, dodatkowo doda kolumne z wynikiem funkcji DATEDIFF.

SELECT * FROM wypozyczenia

SELECT DATEDIFF(datazwrotu, datawyp) from wypozyczenia

 

Ktoś może coś podpowiedzieć? :)

1 odpowiedź

0 głosów
odpowiedź 25 listopada 2018 przez Tomek Sochacki Ekspert (227,490 p.)
Jeśli korzystasz z UNION to obie tabele, a raczej zwrotki z selectów muszą zawierać takie same pola i o tym właśnie masz przecież błąd. Po za tym poczytaj o różnicy między union a union all bo któreś chyba nie kasowało duplikatów jeśli dobrze pamiętam, ale mogę się tu mylić bo w mysql już dawno nie siedziałem.
komentarz 25 listopada 2018 przez niezalogowany
tak, wlasnie potestowalem union i jest to calkowicie co innego niz poszukuje.
komentarz 25 listopada 2018 przez Tomek Sochacki Ekspert (227,490 p.)
Nie znam dokładnie problemu, struktury itp. ale może Ty po prostu szukasz odpowiedniego JOINa? (tak mi coś wygląda, że to by rozwiązało problem...)
komentarz 25 listopada 2018 przez niezalogowany
wlasnie czytam na ten temat, za chwile dam znac czy rozwiazalo problem
komentarz 25 listopada 2018 przez niezalogowany
edycja 25 listopada 2018

@Tomek Sochacki,

Żadne joiny :D

wystarczyło sporządzić takie o to zapytanie:

SELECT DATEDIFF(wypozyczenia.datazwrotu, wypozyczenia.datawyp) as dlugosc, wypozyczenia.datawyp, wypozyczenia.datazwrotu as dlugosc from wypozyczenia

Przy okazji jednak udało mi sie utrwalić INNER JOIN tworzac takie o to (mam nadzieje poprawne) zapytanie, wyciagajace dane z trzech tabel. Proszę o sprawdzenie :)

select DATEDIFF(wypozyczenia.datazwrotu, wypozyczenia.datawyp) as dlugosc, 
wypozyczenia.datawyp, wypozyczenia.datazwrotu, wypozyczenia.naleznosc,
auta.model, auta.marka, auta.ubezpieczenie,
klienci.imie, klienci.nazwisko
from wypozyczenia
join auta
on wypozyczenia.idauta = auta.idauta
join klienci
on wypozyczenia.idklienta = klienci.idklienta

 

1
komentarz 25 listopada 2018 przez Tomek Sochacki Ekspert (227,490 p.)
hehe no widzisz :) czasami warto na chwilę odejść od tematu i spróbować też wrócić za 30-60 minut, nieraz już okazało się, że człowiek na siłę szukał problemu nie tam gdzie jest... ile już razy to przerabiałem w pracy :D

 

Co do zapytania to oki, ale uważaj z joinami na dużych tabelach bo to dość pracochlonny proces dla bazy. Jeśli masz sporo złączeń itp. to poczytaj sobie też o widokach w mysql. Generalnie chodzi o to, że tworzysz jakby tabelę dodatkową (widok), który jest wynikiem różnych skomplikowanych zapytań. Następnie w aplikacji pobierasz dane z tego widoku. Plus jest taki, że w apce robisz banalne select x, y, z from widok, a cała logika join, union itp. itd. jest na bazie.

Oczywiście są przeciwnicy tej metody, którzy wolą logikę pchać do apki... pracowalem i z jednym i z drugim podejściem i w sumie wszystko zależy od aplikacji, struktury, ilości różnych baz na jakich pracujesz itp. itd.

Podobne pytania

0 głosów
1 odpowiedź 1,135 wizyt
pytanie zadane 1 maja 2017 w SQL, bazy danych przez xyuru Obywatel (1,000 p.)
0 głosów
1 odpowiedź 857 wizyt
0 głosów
2 odpowiedzi 1,416 wizyt
pytanie zadane 30 listopada 2020 w C i C++ przez ResCrove Obywatel (1,700 p.)

92,957 zapytań

141,916 odpowiedzi

321,148 komentarzy

62,287 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...