NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Ako zobrazit rows, len pri podmienke, ak jedno z poli je vyplnene.

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Peter Schoeller:22.4.2016 17:47

Ahojte.
Riesim vypis z db MySQL, ked potrebujem vypis len z riadkov, ak je jedno z poli (beruf1) niecim vyplnene.
Nasledovne 4 pokusy hlasia chybu:

$sql = "SELECT * from members WHERE beruf_1 LIKE != '0' ";
$sql = "SELECT * from members WHERE beruf_1 LIKE != 0 ";
$sql = "SELECT * from members WHERE beruf_1 LIKE > 0 ";
$sql = "SELECT * from members WHERE beruf_1 LIKE > 'a' ";

Notice: Trying to get property of non-object in xxxxxxx.php on line 141

Dasli zapisy:

$sql = "SELECT * from members WHERE beruf_1 LIKE '!= 0' ";
$sql = "SELECT * FROM members WHERE beruf_1 != 0 ";

vratia result 0 (ziadne vysledky)

a dalsie:

$sql = "SELECT * from members WHERE beruf_1 LIKE '%' ";
$sql = "SELECT * from members WHERE beruf_1 != '0' ";

vratia koplet tabulku, bez ohladu ci v tom poli nieco je alebo nie.

Jedine co ako tak funguje je zapis:

$sql = "SELECT * from members WHERE beruf_1 LIKE '%a%' ";

Tento zapis vypise len tie riadky, kde sa v povolani (beruf) objavi pismeno "a" co je dost casto pouzivane pismeno, ale nefunguje ak je ako povolanie zadane - "Soins engineer"
Viete mi pomoct?

 
Odpovědět
22.4.2016 17:47
Avatar
LacoS.
Člen
Avatar
LacoS.:22.4.2016 20:04

asi myslis toto:

select * FROM menoTabulky WHERE columnX IS NOT NULL;
// alebo
select * FROM menoTabulky WHERE columnX IS NULL;

// alebo cez dlzky retazcov:
select * FROM menoTabulky WHERE length(columnX) = 0;
// ci
select * FROM menoTabulky WHERE length(columnX) > 0;
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
22.4.2016 20:04
Avatar
Odpovídá na LacoS.
Peter Schoeller:22.4.2016 20:53

Vdaka :)
Prva dvojica prikazov (IS) vypisala opat celu tabulku, ale ta druha dvojica cez dlzku retazca funguje :)

 
Nahoru Odpovědět
22.4.2016 20:53
Avatar
hitzoR
Člen
Avatar
Odpovídá na Peter Schoeller
hitzoR:22.4.2016 22:26

U té první dvojice, kterou uvedl Laco S., celkem závisí na návrhu databáze. Ten první select bude fungovat jen v případě, že sloupec má možnost být null a null je nastaveno jako defaultní hodnota. Kdykoliv jindy tam bude defaultní hodnota pro daný datový typ (varchar - "", int - 0 apod.), což v mysql není bráno jako null.

Editováno 22.4.2016 22:27
 
Nahoru Odpovědět
22.4.2016 22:26
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.