php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.06.2011, 12:13  
Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 48
PHP-Kenntnisse:
Fortgeschritten
Pixelschubser ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] MSSQL - Rechen in der WHERE Bedingung

Guten Tag,

und zwar bau ich gerade eine mysql-Abfrage in mssql um. Wie es scheint, funktionieren Rechnungen mit Attributen nicht in der Where-Bedingung.

PHP-Code:
$sql.= "WHERE ".time()."< (r_date+garantie*60*60*24*30.4375)"
Liege ich in meiner Vermutung richtig, oder schreibt man den Spaß nur etwas anders? Hab leider im Netz nichts genaues dazu gefunden.

Grüße
Pixelschubser ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.06.2011, 12:42  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Hi.

Was soll den r_date und garantie sein?? Auf jedenfall keine Variablen.

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 16.06.2011, 12:52  
Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 48
PHP-Kenntnisse:
Fortgeschritten
Pixelschubser ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von wolf29 Beitrag anzeigen
Was soll den r_date und garantie sein?? Auf jedenfall keine Variablen
Der Name der Spalten. In r_date steht der timestamp vom Rechnungsdatum, in der Spalte Garantie, die Garantie in Monaten. Nun muss ich also ein Monat in Sekunden hoch rechnen. Somit hab ich dann das "Garantie-End-Datum".

Rechnungsdatum(timestamp)+Garantie(Monate)*60*60*2 4*30.4375

Dieses Ergebnis wird dann mit dem aktuellen Datum verglichen.

Gruß
Samuel
Pixelschubser ist offline   Mit Zitat antworten
Alt 16.06.2011, 12:57  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Dann poste doch bitte die Fehlermeldung. Außerdem sollte doch auch MSSQL Datumsfunktionen haben, oder nicht?
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 16.06.2011, 13:19  
Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 48
PHP-Kenntnisse:
Fortgeschritten
Pixelschubser ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Fehlermeldung gibt es in dem Sinne keine. Bekomm einfach nur kein Ergebnis. So sieht es aus, wenn ich mir den Query ausgeben lasse:

Code:
WHERE 1308226630<(r_date + garantie*60*60*24*30.4375);
Datumfunktionen gibt es. Allerdings weis ich nicht warum ich mir erst ein Datum errechnen lassen soll, wenn ich auch einfach nur zwei Zahlen miteinander vergleichen kann.
Pixelschubser ist offline   Mit Zitat antworten
Alt 16.06.2011, 13:20  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

...und der Teil der Query davor? Also das ganze SQL Statement? Schon mal testweise in phpmyadmin ausgeführt?

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 16.06.2011, 13:24  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Und was genau steht in r_date oder garantie? Vielleicht rechnet MSSQL in Milisekunden, lass PHPs time() mal weg und benutz das MSSQL-Equivalent dazu (bitte googlen).

Edit: Naja dann wär die Bedingung wohl immer wahr...
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 16.06.2011, 13:29  
Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 48
PHP-Kenntnisse:
Fortgeschritten
Pixelschubser ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von wolf29 Beitrag anzeigen
...und der Teil der Query davor? Also das ganze SQL Statement? Schon mal testweise in phpmyadmin ausgeführt?
Wir reden hier von mssql, in mysql funktionierte die Abfrage ja auch.

Nicht wundern, dass die Abfrage sehr umfrangreich ist. Diese wird von einem PHP-Script generiert. Funktioniert auch soweit, eben nur nicht die Berechnung des Rechnungsdatums.

Code:
SELECT H.h_id, H.owner, H.bezeichnung, H.s_nr, H.status, H.inventory, H.garantie, H.r_date, L.lo_location, L.lo_id, A.a_name 
FROM hardware AS H 
LEFT JOIN artikel AS A ON H.art = A.a_id 
LEFT JOIN owner AS O ON H.owner = O.o_sid 
LEFT JOIN location AS L ON H.location = L.lo_id 
LEFT JOIN mac AS M ON H.h_id = M.mh_id     
WHERE 1308226807<(r_date + garantie*60*60*24*30.4375) 
AND 1308226807>((r_date)+(garantie)-12*60*60*24*30.4375)) 
AND (status = '1' OR status = '2' ) 
ORDER BY h_id ASC
Das hier ist die Auswertung des Querys. Die eigentliche Abfrage brauch ich nicht posten, da diese wie gesagt generiert wird und das Script über 100 Zeilen lang ist.

Geändert von Pixelschubser (16.06.2011 um 13:37 Uhr).
Pixelschubser ist offline   Mit Zitat antworten
Alt 16.06.2011, 13:33  
Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 48
PHP-Kenntnisse:
Fortgeschritten
Pixelschubser ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Und was genau steht in r_date oder garantie? Vielleicht rechnet MSSQL in Milisekunden, lass PHPs time() mal weg und benutz das MSSQL-Equivalent dazu (bitte googlen).
Darum gehts nicht, selbst wenn in r_date "0" stehen würde müsste er trotzdem damit rechnen und nicht den Spaltennamen anzeigen.

Zitat:
Zitat von Chriz Beitrag anzeigen
Edit: Naja dann wär die Bedingung wohl immer wahr...
Richtig, weil es nur ein Code-Schnipsel war. Wollte euch nicht mit der ganzen Abfrage belasten
Pixelschubser ist offline   Mit Zitat antworten
Alt 16.06.2011, 13:39  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Wenn es so ist wie du beschreibst würde es ja funktionieren. Entsprechend solltest du alle Möglichkeiten abklappern, so unwahrscheinlich sie dir auch vorkommen.

Zitat:
Zitat von Pixelschubser Beitrag anzeigen
Darum gehts nicht, selbst wenn in r_date "0" stehen würde müsste er trotzdem damit rechnen und nicht den Spaltennamen anzeigen.
Doch genau darum geht es, denn scheinbar wird die Bedingung nicht wahr, was entweder an den beiden "Variablen" liegt, daran dass deine Formel falsch ist (wenn sie in MySQL geht, ist sie aber vermutlich richtig) oder daran dass MSSQL syntaktisch Rechnungen nicht unterstützt. Wenn letzteres der Fall wäre, würdest du aber einen Fehler bekommen und nicht einfach kein Ergebnis.

Klinke mich allerdings aus, Diskussionen mit beratungsresistentem Beteiligten macht weder Spass noch Sinn.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
'as'-Bezeichner in where bedingung nutzen siwesa Datenbanken 4 10.05.2011 11:48
Select -> Where bedingung geht nicht. Rutor PHP Tipps 2010 14 26.05.2010 17:41
[Erledigt] Update mit WHERE Bedingung lord_icon Datenbanken 6 01.04.2010 10:22
[Erledigt] Intertabellarische Berechnungen, wie? dave303 Datenbanken 13 05.03.2010 11:58
mysqli_multi_query lässt Eintrag aus... Samhayne Datenbanken 8 07.02.2010 19:02
Ausgabe erfolgt nicht Extremefall PHP Tipps 2009 17 17.12.2009 19:51
[Erledigt] WHERE - Bedingung mit Array Werten abgleichen knuffiwuffi PHP Tipps 2009 21 16.11.2009 15:37
[Erledigt] SQL Anweisung sadry PHP Tipps 2009 38 20.08.2009 11:28
[Erledigt] Abfrage mit array als WHERE Bedingung jank Datenbanken 15 31.05.2009 18:27
Where Bedingung mit Session datei incubo PHP Tipps 2008 11 28.04.2008 14:26
[Erledigt] WHERE Bedingung Datenbanken 1 11.08.2006 08:29
[Erledigt] nach NULL abfragen / where bedingung Datenbanken 3 13.03.2006 16:44
Where Bedingung phpbeginner Datenbanken 4 24.06.2005 11:49
php Variablen in MySQL Abfrage verwenden (WHERE Bedingung) PHP Tipps 2005 20 20.04.2005 20:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mssql rechnen, mssql rechnen in query, mssql wenn dann bedingung, in mssql rechnen, ms sql where, mssql rechnen time, mssql rechnen in abfrage, mssql mit datum rechnen, mssql 8 rechnen mit null, mssql rechen funktionen, php ms sql order by geht nicht, rechnen in sql statement, mssql php bedingung, php mssql ausgabe mit bedinung, php rechen, mssql where mit bedingung, rechnen mit ms sql, php bedingungen mssql, rechnung in der wherebedingung, sql where

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum