Problem z zapytaniem => zwraca 1 pole, zamiast 7

0
		zapytanie = "SELECT umowa.id, dataOd, dataDo, stanowisko, wynagrodzenie, firma.nazwaFirmy, adnotacja FROM umowa LEFT JOIN firma ON umowa.idFirmy=firma.id WHERE umowa.id='";
		zapytanie += zamienLiczbeNaString(wybraneId);
		zapytanie += "'";

Struktura jest taka:

umowa(id int4, dataOd date, dataDo date, stanowisko text, wynagrodzenie money, idFirmy int2, adnotacja text)
firma(id int2, nazwaFirmy text)

Kiedy wykonuję w/w zapytanie, zwraca mi 1 pole, w jednym rekordzie, zamiast 7.
Proszę o pomoc.

0

Okazuje się, że program zwraca tylko 1 pole, i tym polem jest umowa.id.

Chyba winny jest WHERE. Ale nie wiem, jako to przepisać, żeby zwrócić wybrany rekord (czyli wskazać go) i użyć jednocześnie JOIN

Już się wyjaśniło:
Bardzo przepraszam za zamieszanie. Zapytanie dobrze zwracało wynik, popełniłem błąd w kodzie, i zamiast sprawdzać liczbę pól, sprawdzałem liczbę rekordów. Pola dobrze były zwracane.

Złapałem wyjątek, i okazało się, że próbuję skonwertować NULL na string. Także dziękuję i przepraszam za zamieszanie.

0

Pokaż kod który puszcza zapytanie i odbiera wynik, bo mam wrażenie że puszczasz coś w stylu ExecuteScalar

0

Okazuje się, że nazwaFirmy jest NULLEM, w tym zapytaniu. Więc nie wiem, co jest grane.

(pewna funkcja)...

	zapytanie = "SELECT umowa.id, umowa.dataOd, umowa.dataDo, umowa.stanowisko, umowa.wynagrodzenie, firma.nazwaFirmy, umowa.adnotacja FROM umowa LEFT JOIN firma ON umowa.idFirmy=firma.id WHERE umowa.id='";
	zapytanie += zamienLiczbeNaString(wybraneId);
	zapytanie += "'";
	
	wynikZapytania = baza.wykonajZapytanie(zapytanie);
	
	for (int i = 0; i < wynikZapytania.size(); i++)
	{
		fl_alert("111");
		tekst += wynikZapytania[i][1].as<string>();
		tekst += " ";
		fl_alert("211");
		tekst += wynikZapytania[i][2].as<string>();
		tekst += " ";
		fl_alert("311");
		tekst += wynikZapytania[i][3].as<string>();
		tekst += " ";
		fl_alert("411");
		tekst += wynikZapytania[i][4].as<string>();
		tekst += " ";
		fl_alert("511");
		tekst += wynikZapytania[i][5].as<string>();
		tekst += " ";
		fl_alert("611");
		tekst += wynikZapytania[i][6].as<string>();
		tekst += "\n";
		fl_alert("111");
	}

Dochodzi do alertu 511 i zwraca wyjątek, że nie można skonwertować NULL na string

1

To znaczy, że w umowie masz umowę z firmą której nie ma w tabeli firmy lub wartość umowa.idfirmy jest null

1 użytkowników online, w tym zalogowanych: 0, gości: 1