php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-05-2007, 15:17
hamstah
 Newbie
Links : Onlinestatus : hamstah ist offline
Registriert seit: Sep 2003
Beiträge: 57
hamstah ist zur Zeit noch ein unbeschriebenes Blatt
Standard Abfrage Problem

Hallo,

also ich habe folgendes Problem. Ich habe eine Tabelle in der es das feld aktiv gibt. Werte sind entweder 1 oder 0. So hier meine Abfrage:

SELECT *
FROM firma
WHERE firma LIKE '%testfirma%'
OR brancheninfos LIKE '%testfirma%'
OR katname LIKE '%testfirma%'
OR katschlagworte LIKE '%testfirma%'
AND aktiv = '1'


Habe auch einen Datensatz drin der Testfirma heisst. Jedoch hat er den wert 0 bei aktiv. Meine Abfrage ignoriert dies komplett und zeigt ihn trotzdem an. Hab es bisher immer so gelöst und funktionierte auch wunderbar aber jetzt nicht mehr. Wer kann mir einen Tip geben?

gruß

Hamstah
Mit Zitat antworten
  #2 (permalink)  
Alt 31-05-2007, 15:19
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

priorität explizit angeben:
Code:
... WHERE (A OR B OR C OR D) AND E
und nimm die hochkommata bei nummerischen werten weg.
Mit Zitat antworten
  #3 (permalink)  
Alt 31-05-2007, 15:28
hamstah
 Newbie
Links : Onlinestatus : hamstah ist offline
Registriert seit: Sep 2003
Beiträge: 57
hamstah ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmmm verstehe ich jetzt noch nicht ganz:

also sollte es so heißen:

SELECT * FROM firma WHERE (katname OR katschlagworte OR firma) LIKE '%testfirma%' AND aktiv=1


Also ich habe es jetzt gelöst bekommen oder nicht wirklich verstanden warum es so ist. Habe die Abfrage nache aktiv nach vorne gesetzt. Jetzt funktioniert es. Kurze Erklärung wäre sehr hilfreich.

Danke
Mit Zitat antworten
  #4 (permalink)  
Alt 31-05-2007, 15:31
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

deine lösung ist nicht korrekt.

die klammern setzst du um die bedingungen.
eine bedingung ist eine "gleichung", sog. expression, z.b.

a = 12

oder

b LIKE '%foo'

mit den buchstaben habe ich natürlich die ausdrücke abgekürzt.
Mit Zitat antworten
  #5 (permalink)  
Alt 31-05-2007, 15:31
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von hamstah
also sollte es so heißen:

SELECT * FROM firma WHERE (katname OR katschlagworte OR firma) LIKE '%testfirma%' AND aktiv=1
Nein, das ist immer noch kompletter Blödsinn.

Zitat:
Kurze Erklärung wäre sehr hilfreich.
Beschäftige dich mit elementarer Aussagenlogik - insb. dem unterschiedlichen Rang von logischen Verknüpfungen.

http://de.wikipedia.org/wiki/Aussagenlogik
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #6 (permalink)  
Alt 31-05-2007, 15:38
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wahsaga, afaik sind "und" und "oder" in der al. gleichrangig. die priorität muss in mysql definiert sein, auch wenn ich im manual auf die schnelle nichts finde.
Mit Zitat antworten
  #7 (permalink)  
Alt 31-05-2007, 15:39
hamstah
 Newbie
Links : Onlinestatus : hamstah ist offline
Registriert seit: Sep 2003
Beiträge: 57
hamstah ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok danke für eure Hilfe. Jetzt funktioniert es richtig.

Gruß

Hamstah
Mit Zitat antworten
  #8 (permalink)  
Alt 31-05-2007, 15:40
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

na dann zeig mal die query.
Mit Zitat antworten
  #9 (permalink)  
Alt 31-05-2007, 15:40
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Topicstarter
Zitat:
4+3*5 != (4+3)*5
aus diesem Grunde musst du Klammern setzen. Der Multiplikator hat die höhere Priorität als die Addition. Wenn du also das gewünschte Resultat willst musst du erst festlegen, dass die Addition bevorzugt werden soll. Und genau das machst du mit Klammern.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #10 (permalink)  
Alt 31-05-2007, 15:48
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@penizilin
http://dev.mysql.com/doc/refman/5.1/...recedence.html
Gemäss dieser Liste ist OR "minderwertiger" als AND
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #11 (permalink)  
Alt 31-05-2007, 15:51
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

alles klar...
Mit Zitat antworten
  #12 (permalink)  
Alt 31-05-2007, 16:43
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

[klugscheiß]"AND" entspräche einer Multiplikation

(1*1 = 1 = true,
1*0 = 0 = false,
0*0 = 0 = false)

und "OR" einer Addition

(1+1 = 2 = true,
1+0 = 1 = true,
0 + 0 = 0 = false)

=> Punktrechnung vor Strichrechnung => AND vor OR

[/klugscheiß]
__________________
ich glaube
Mit Zitat antworten
  #13 (permalink)  
Alt 01-06-2007, 08:10
hamstah
 Newbie
Links : Onlinestatus : hamstah ist offline
Registriert seit: Sep 2003
Beiträge: 57
hamstah ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Morgen,

sorry für die späte Antwort. Normalerweise habe ich nach dem Status abgefragt. Also hier meine query:

SELECT * FROM firma
WHERE status IN ('21', '24', '42', '52')
AND firma LIKE '%$suche%'
OR brancheninfos LIKE '%$suche%'
OR katname LIKE '%$suche%'
OR katschlagworte LIKE '%$suche%'

So funktioniert es.

Gruß

Hamstah
Mit Zitat antworten
  #14 (permalink)  
Alt 01-06-2007, 10:32
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Naja, das findet aber nun auch Einträge, wo das Suchwort in z.B. brancheninfos vorkommt, der Status aber nicht in diesen vieren ist. Wenn das so sein soll... dann funktionierts.
__________________
ich glaube
Mit Zitat antworten
  #15 (permalink)  
Alt 01-06-2007, 11:51
hamstah
 Newbie
Links : Onlinestatus : hamstah ist offline
Registriert seit: Sep 2003
Beiträge: 57
hamstah ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmm nee soll natürlich nicht so sein. er soll halt das suchwort mit den ganze einträgen vergleich und dann halt schauen wenn er was gefunden hat ob das dann auch eins von den vier stati hat. sonst natürlich nicht. also doch wohl nicht richtig.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:16 Uhr.