Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: potrzebna pomoc w zbudowaniu zapytania
Forum PHP.pl > Forum > Bazy danych > MySQL
csharp
Cześć, potrzebuje pomocy w zbudowaniu zapytania.

mam taką strukturę tabeli:

tabela1:

---ID_TABELA1-------------USERNAME----------TEXT-----------
---------1----------------------jacek------------testowy tekst
---------2----------------------placek------------testowy tekst2
---------3----------------------mariola------------testowy tekst3
---------4----------------------jerzy------------testowy tekst
---------5----------------------krzysiek------------testowy tekst2
---------6----------------------jerzy------------testowy tekst3

tabela2:

---ID_TABELA2---------ID_TABELA1------USERNAME----------TEXT-----------
---------1-----------------------1--------------jacek------------testowy tekst
---------2-----------------------1--------------jacek------------testowy tekst2
---------3-----------------------1--------------jerzy------------testowy tekst3
---------4-----------------------2--------------jacek------------testowy tekst4
---------5-----------------------2--------------mariola------------testowy tekst3
---------6-----------------------1--------------jacek------------testowy tekst4
---------7-----------------------2--------------placek------------testowy tekst3
---------8-----------------------1--------------jacek------------testowy tekst4
---------9-----------------------3--------------jerzy------------testowy tekst3


i chciałbym z tego wyciągnąć wszystkie rekordy z TABELA1 z którymi powiązany jest dany użytkownik.

czyli
  1. SELECT * FROM tabela1 WHERE username = 'jerzy';

zapytanie zwraca mi rekordy o id: 4,6

ale okazuje się, że użytkownik "jerzy" jest również powązany z rekordem nr 1 z tabeli1 oraz nr 3 (mówi o tym tabela2 rekord 3 i 9).

docelowo chciałbym osiągnąć zwrot wyników w postaci rekordów z tabeli1, czyli w powyższym przypadku id: 4, 6, 1, 3

w tabeli2 ID_TABELA1 może się powtarzać, dlatego trzebaby tu podstawić unikalną wartość...

chodzi o zapytanie tego typu:

pokaż wszystkie rekordy z tabeli nr 1, w których username = jerzy oraz jeśli w tabeli nr 2 istnieje warunek username = jerzy, pokaż id rekordów z tabela1 i dodaj je do całego zapytania.

jak dla mnie to za bardzo skomplikowane... trochę się z tym męcze już... mógłby ktoś coś podpowiedzieć? z góry dziękuje.

daniel1302
  1. SELECT t.id, t.username, t.text FROM tabela1 t WHERE t.username='daniel' OR t.id IN(SELECT t2.id1 FROM tabela2 t2 WHERE username='daniel')


Utworzyłem swoje tabelki bo dziwnie nazywasz te ID smile.gif
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.3.7deb7
  3. -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
  4. --
  5. -- Host: localhost
  6. -- Czas wygenerowania: 14 Lut 2013, 19:07
  7. -- Wersja serwera: 5.1.63
  8. -- Wersja PHP: 5.3.3-7+squeeze14
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12.  
  13. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  14. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  15. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  16. /*!40101 SET NAMES utf8 */;
  17.  
  18. --
  19. -- Baza danych: `testy`
  20. --
  21.  
  22. -- --------------------------------------------------------
  23.  
  24. --
  25. -- Struktura tabeli dla `tabela1`
  26. --
  27.  
  28. CREATE TABLE IF NOT EXISTS `tabela1` (
  29. `id` int(11) NOT NULL AUTO_INCREMENT,
  30. `username` varchar(32) NOT NULL,
  31. `text` varchar(32) NOT NULL,
  32. PRIMARY KEY (`id`)
  33. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
  34.  
  35. --
  36. -- Zrzut danych tabeli `tabela1`
  37. --
  38.  
  39. INSERT INTO `tabela1` (`id`, `username`, `text`) VALUES
  40. (1, 'adam', 'tekst adama'),
  41. (2, 'beata', 'tekst beaty'),
  42. (3, 'celina', 'tekst celiny'),
  43. (4, 'daniel', 'tekst daniela');
  44.  
  45. -- --------------------------------------------------------
  46.  
  47. --
  48. -- Struktura tabeli dla `tabela2`
  49. --
  50.  
  51. CREATE TABLE IF NOT EXISTS `tabela2` (
  52. `id` int(11) NOT NULL AUTO_INCREMENT,
  53. `id1` int(11) NOT NULL,
  54. `username` varchar(32) NOT NULL,
  55. `text` varchar(32) NOT NULL,
  56. PRIMARY KEY (`id`)
  57. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
  58.  
  59. --
  60. -- Zrzut danych tabeli `tabela2`
  61. --
  62.  
  63. INSERT INTO `tabela2` (`id`, `id1`, `username`, `text`) VALUES
  64. (1, 2, 'daniel', 'tekst daniela z tabeli 2'),
  65. (2, 1, 'fiona', 'tekst fiony z tabeli numer 2'),
  66. (3, 1, 'daniel', 'tekst daniela drugiego z tabeli ');
csharp
dzięki wielkie! dokładnie o to chodziło, nauczyłem się nowej rzeczy przynajmniej smile.gif))
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.