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

question-closed „zminenna” w zapytaniu

Object Storage Arubacloud
0 głosów
287 wizyt
pytanie zadane 24 listopada 2017 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
zamknięte 24 listopada 2017 przez Bartess

Cześć.
Jeżeli mam złożone zapytanie, w którym kilka razy używam tej samer wartości w warunku, to czy mogę ją zamienić na jakiś rodzaj „zmiennej”?
Załóżmy, coś takiego (pomijając sens samego przykładu):

select
		info1,
      (select info2 from tab2 where imie = 'Adam') as 'info2a',
      (select info3 from tab3 where imie = 'Adam') as 'info3a',
      (select inf42 from tab4 where imie = 'Adam') as 'info4a',
from
    oddzialy, obroty_kh_mies FV
where imie = 'Adam' 

A jak napisać, by nie wklepywać za każdym razem innego imienia? Tak można?:

ZMIENNA = 'Adam'
select
		info1,
      (select info2 from tab2 where imie = ZMIENNA) as 'info2a',
      (select info3 from tab3 where imie = ZMIENNA) as 'info3a',
      (select inf42 from tab4 where imie = ZMIENNA) as 'info4a',
from
    oddzialy, obroty_kh_mies FV
where imie = ZMIENNA

Jeśli tak, to jak?

Dziękuję.

komentarz zamknięcia: Rozwiązany.

1 odpowiedź

+1 głos
odpowiedź 24 listopada 2017 przez Chess Szeryf (76,710 p.)
wybrane 24 listopada 2017 przez Bartess
 
Najlepsza

https://dev.mysql.com/doc/refman/5.7/en/user-variables.html

SET @your_variable = 'Adam';

Używa się tego tak:

SELECT * FROM `zakupy` WHERE `name` = @your_variable;

 

komentarz 24 listopada 2017 przez Bartess Gaduła (3,630 p.)

Działa, fajnie... ale jak to wkleję w PHP, to działać przestaje... Jak połączyć SET z SELECT?

Wpadłem na szatański pomysł i użyłem tak:

$query = "SET @ZMIENNA = ".$zmienna.";";
$query2 = "select ..... where @ZMIENNA..... ..;";
$result = mysqli_query($link, $query);
$result = mysqli_query($link, $query2);
(....)

Działa, ale czy poprawne to jest?

komentarz 24 listopada 2017 przez Chess Szeryf (76,710 p.)
edycja 24 listopada 2017 przez Chess

Moim zdaniem jest to poprawne, ale jaki ma to sens, skoro możesz sobie podstawić zamiast @zmienna po prostu $zmienna?

Wydaje mi się, że wszystko OK (w porządku).

Edit: Tak jest to poprawny zapis i nie jest w nim nic nieprawidłowego.

Zamiast takiego kodu:

select info2 from tab2 where imie =  $zmienna;
select info3 from tab3 where imie =  $zmienna;
select info4 from tab4 where imie =  $zmienna;

Może i lepiej jak będzie tak:

SET @zmienna = $zmienna;

select info2 from tab2 where imie =  @zmienna;
select info3 from tab3 where imie =  @zmienna;
select info4 from tab4 where imie =  @zmienna;

 

 

komentarz 24 listopada 2017 przez Bartess Gaduła (3,630 p.)
Wygląda to na pozbawione sensu, ale łatwiej przerzucić pytanie do np HeidiSQLa i sprawdzić ewentualnie co jest nie tak. Lub napisane i przetestowane zapytanie w w/w programie łatwiej zagnieździć w PHP bez podmieniania np. 3 zmiennych w 10 miejscach w zapytaniu. (Tak se to wykompinowałem, ale czy słusznie? ;-) ).

Czy na końcu trzeba robić jakiś unset, czy cuś?
komentarz 24 listopada 2017 przez Chess Szeryf (76,710 p.)

Jeśli chcesz pozbyć się zmiennej, której już nie używasz, bo chcesz zaoszczędzić na pamięci, czy coś, to możesz napisać:

SET @zmienna = null;

To taki jakby unset z PHP, o ile się nie mylę.

https://forums.phpfreaks.com/topic/247222-delete-mysql-variable/

http://grokbase.com/t/mysql/mysql/055zbakwnp/deleting-user-variable

komentarz 24 listopada 2017 przez Bartess Gaduła (3,630 p.)
Dziękuję :-).

Podobne pytania

0 głosów
1 odpowiedź 364 wizyt
pytanie zadane 22 stycznia 2023 w SQL, bazy danych przez gatka84 Bywalec (2,150 p.)
0 głosów
0 odpowiedzi 415 wizyt
pytanie zadane 15 maja 2022 w SQL, bazy danych przez iderek Nowicjusz (120 p.)
0 głosów
1 odpowiedź 321 wizyt
pytanie zadane 20 października 2021 w SQL, bazy danych przez Jacek Śmiel Użytkownik (510 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...