Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] problem z zapytaniem z dwóch tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
walldeck
WItam!

Potrzebuje wykonać zapytanie które zwróci mi wartość tekstową z kolumny 'obrazek' z tabeli STATUS, jeśli w tabeli 'ZLECENIA' jest wartość 1,2,3,4 .. 8 w kolumnie 'status_obecny'. Dodam tylko ze 'status_obecny' z tabeli ZLECEN jest powiązany kluczem obcym z 'satus_id' z tabeli STATUS.

Struktury dla tych dwoch tabel to:

  1. REATE TABLE `status` (
  2. `status_id` int(200) NOT NULL AUTO_INCREMENT,
  3. `obrazek` varchar(255) NOT NULL,
  4. `wartosc` int(50) NOT NULL,
  5. PRIMARY KEY (`status_id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
  7.  
  8. --
  9. -- Zrzut danych tabeli `status`
  10. --
  11.  
  12. INSERT INTO `status` VALUES (1, 'Czekamy na akceptacje', 1);
  13. INSERT INTO `status` VALUES (2, 'Akceptacja', 2);
  14. INSERT INTO `status` VALUES (3, 'W kolejce', 3);
  15. INSERT INTO `status` VALUES (4, 'Drukowanie', 4);
  16. INSERT INTO `status` VALUES (5, 'Wygrzewanie', 5);
  17. INSERT INTO `status` VALUES (6, 'wykanczanie', 6);
  18. INSERT INTO `status` VALUES (7, 'Wysylka', 7);
  19. INSERT INTO `status` VALUES (8, 'Anulowane', 8);



  1. CREATE TABLE `zlecenia` (
  2. `zlecenia_id` int(255) NOT NULL AUTO_INCREMENT,
  3. `rozmiar_szerokosc` varchar(200) DEFAULT NULL,
  4. `material` varchar(255) DEFAULT NULL,
  5. `technologia` varchar(255) DEFAULT NULL,
  6. `ilosc_grafik` smallint(50) DEFAULT NULL,
  7. `nazwa_zlecenia` varchar(255) DEFAULT NULL,
  8. `wykonczenie` varchar(255) DEFAULT NULL,
  9. `ilosc_sztuk` int(200) DEFAULT NULL,
  10. `data_wysylki` date DEFAULT NULL,
  11. `data_dostawy` date DEFAULT NULL,
  12. `wysylka` varchar(255) DEFAULT NULL,
  13. `adres_klienta` varchar(255) DEFAULT NULL,
  14. `status_obecny` int(50) DEFAULT NULL,
  15. `komentarz` varchar(255) DEFAULT NULL,
  16. `wyk_id` int(255) DEFAULT NULL,
  17. `numer_zlecenia` int(255) DEFAULT NULL,
  18. `data_zlecenia` date DEFAULT NULL,
  19. `rozmiar_wysokosc` int(100) DEFAULT NULL,
  20. PRIMARY KEY (`zlecenia_id`),
  21. KEY `status_obecny` (`status_obecny`)
  22. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
  23.  
  24. --
  25. -- Zrzut danych tabeli `zlecenia`
  26. --
  27.  
  28. INSERT INTO `zlecenia` VALUES (5, '200x302a', 'frontliterrf', '', 3, 'aa', 'cut to size', 44, '2008-04-07', '2008-04-07', 'ups', 'fsdf', 2, 'dasdas', 2, 45543, '2008-04-07', 0);
  29. INSERT INTO `zlecenia` VALUES (6, '200x312', 'frontlite', 'gfdgfd3', 3, 'a', 'cut to size', 44, '2008-04-07', '2008-04-07', 'upsd', 'fsdf', 2, 'dasdas', 3, 4554, '2008-04-07', 0);
  30. INSERT INTO `zlecenia` VALUES (7, '43423', '', '', 1, '', '', 3, '2007-09-01', '2007-09-01', 'fdsfd', 'fsdfsd', 2, 'gf', NULL, 323, '2007-09-01', 1000);
  31. INSERT INTO `zlecenia` VALUES (8, '3432423', 'fsdfd', 'ffsdfd', 34, 'fdfsd', 'fsdfsd', 323, '2007-09-01', '2007-09-01', 'fsdfd', 'fsdfsd', 1, 'sdfsdf', NULL, 45, '2007-09-01', 1000);
  32. INSERT INTO `zlecenia` VALUES (9, '120 ', 'szmata cienka 110 gr', 'Sublimacja', 200, 'Zlecenie', 'tasma flagowa', 100, '2008-02-28', '0208-02-25', 'Maciej', 'Dk,Bornholm', 1, 'duze zlecenia.Uwaga na wymiar', NULL, 666, '2007-09-01', 60);
  33. INSERT INTO `zlecenia` VALUES (10, '100', 'szmata gryba 205gr', 'sublimacja', 2, 'hiros', 'tunel 15cm gora dol', 1, '2008-03-07', '2008-03-09', 'ups', 'DK', 1, 'nic dodac nic ujac', NULL, 5556, '2008-03-07', 200);



Spłodziłem coś takiego :
SELECT obrazek FROM status WHERE status_obecny LIKE wartosc ;

Ale coś nie bangla:(
Wywala:
Cytat
#1054 - Unknown column 'status_obecny' in 'where clause'

Nie widzi kolumny status_obecny. Pewnie to wynika ze zle zlozonego zapytania badz zlego powiazania kluczem obcym...
Poproszę o porawienie i ewentualnie rade jak pwiazac tablele foreignem KEY

Dzieki
Cienki1980
W zapytaniu masz odwołanie do kolumny która nie jest w tabeli którą umieściłeś w zapytaniu. Czyli łopatologicznie:
żeby korzystać z kolumny musisz wskazać tabele w której ta kolumna się znajduje.
Polecam wykorzystanie joina.
mrok
  1. SELECT st.obrazek FROM STATUS AS st
  2. INNER JOIN zlecenia AS zl ON st.status_id = zl.status_obecny
  3. ORDER BY zl.zlecenia_id


order mozesz wywalic - to tak dla lepszego sprawdzania
pozdrawiam
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.