Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Dwie tablice jedno zapytanie
piraciq
post
Post #1





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam serdecznie, proszę o pomoc zgromadzenie wielkie :-)

mam dwie tablice w pierwszej trzymam nazwę a w drugiej zapisane ustawienia


tabela z opcjami
  1. <?
  2. CREATE TABLE `s_op` (
  3.  `id` int(10) NOT NULL auto_increment,
  4.  `op_1` int(1) default '0',
  5.  `op_2` int(1) default '0',
  6.  `op_3` int(1) default '0',
  7.  `op_4` int(1) default '0',
  8.  `op_5` int(1) default '0',
  9.  `op_6` int(1) default '0',
  10.  `op_7` int(1) default '0',
  11.  `op_8` int(1) default '0',
  12.  `op_9` int(1) default '0',
  13.  `op_10` int(1) default '0',
  14.  `op_11` int(1) default '0',
  15.  `op_12` int(1) default '0',
  16.  `op_13` int(1) default '0',
  17.  `op_14` int(1) default '0',
  18.  UNIQUE KEY `id` (`id`),
  19.  KEY `op_1` (`op_1`,`op_2`,`op_3`,`op_4`,`op_5`,`op_6`,`op_7`,`op_8`,`op_9`,`op_10`,`op_11`,`op_12`,`op_13`,`op_14`)
  20. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  21. ?>


tabela z nazwa usera
  1. <?
  2. CREATE TABLE `s` (
  3.  `id` int(5) NOT NULL auto_increment,
  4.  `nazwa` varchar(255) NOT NULL,
  5.  PRIMARY KEY  (`id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  7. ?>

i teraz przy pomocy jedno zapytania chciał bym wybrać nazwę z tabeli s gdzie spełni warunek ze op_4=1

czy może ktoś pomóc questionmark.gif

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  1. SELECT nazwa FROM s, s_op WHERE op_4=1


?


--------------------
Go to the top of the page
+Quote Post
piraciq
post
Post #3





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


niestety nie działa :/
tak czy inaczej wybiera ni wszystkie rekordy
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




no będzie wszystkie wybierać... bo ty sprawdzasz tylko czy ten warunek jest spełniony i tyle.


--------------------
Go to the top of the page
+Quote Post
piraciq
post
Post #5





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


powiem inaczej w phpmyadmin pokazuje mi nawet te rekordy które nie spełniają tego warunku .

  1. SELECT nazwa FROM s, s_op WHERE op_4=1


daje mi wynik 14 a tylko jeden ma ustawioną wartość na 1.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a ile masz rekordów w nazwa? 14?


--------------------
Go to the top of the page
+Quote Post
piraciq
post
Post #7





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


w tabeli s mam 14 rekordów i tyle samo w tabeli s_op przy czym w tabeli s_op jeden rekord ma ustawione pole op_1 na "1", ale tak czy inaczej wybiera mi wszytskie
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




nie rozumiesz chyba wybierasz wszystkie nazwy z tabeli s które spełniają warunek: kolumna op_4 jest równa 1 jeśli tak to wyświetli wszystko w kolumnie nazwa, jeśli nie nic.


--------------------
Go to the top of the page
+Quote Post
piraciq
post
Post #9





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


no tak fakt nie rozumie skoro tylko jeden warunek może być spełniony to dlaczego wybiera mi wszystkie rekordy questionmark.gif
Go to the top of the page
+Quote Post
piotrooo89
post
Post #10


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




bo ten warunek jest spełniony. a powiedz co ty chcesz zrobić. wytłumacz to na chłopski rozum.


--------------------
Go to the top of the page
+Quote Post
piraciq
post
Post #11





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


user - Adam ma zapisane ustawienia w tabeli s_op
dajmy na to op_1 - pokazywanie się innym czy jest online
op_2 czy chce dostawać newslettera

i teraz ja chce w panelu osiągnąć takie coś ze przy pomocy jednego zapytania wyciągnę sobie wszystkich którzy mają zaznaczoną opcję 2 czyli wysyłanie newslettera wraz z imieniem i nr id
Go to the top of the page
+Quote Post
piotrooo89
post
Post #12


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




to na mój chłopski rozum brakuje Ci jeszcze jednej kolumny w tabeli s_op która połączy Ci tabele usera z tabelą opcji.

Ten post edytował piotrooo89 16.03.2009, 23:08:46


--------------------
Go to the top of the page
+Quote Post
piraciq
post
Post #13





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


to co musiał bym zmienić w strukturze tabel abym mógł tego dokonać questionmark.gif
Go to the top of the page
+Quote Post
piotrooo89
post
Post #14


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




dodajesz w s_op kolumnie o nazwie ids i podajesz id usera z tabeli s. potem w klauzuli WHERE dajesz

  1. WHERE s_op=1 AND s.id=s_op.ids


i śluz.


--------------------
Go to the top of the page
+Quote Post
piraciq
post
Post #15





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


czyli nie wystarczy jak tabele maja tak samo numerowane indexy questionmark.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 15:05