Analytical expressions for three P-wave attenuation mechanisms in sedimentary rocks are given a unified theoretical framework. Two of the models concern wave-induced flow due to heterogeneity in the elastic moduli at ``mesoscopic'' scales (scales greater than grain sizes but smaller than wavelengths). In the first model, the heterogeneity is due to lithological variations (e.g., mixtures of sands and shales) with a single fluid saturating all the pores. In the second model, a single uniform lithology is saturated in mesoscopic ``patches'' by two immiscible fluids (e.g., air and water). In the third model, the heterogeneity is at ``microscopic'' grain scales (broken grain contacts and/or micro-cracks in the grains) and the associated fluid response corresponds to ``squirt flow.'' The model of squirt flow derived here reduces to proper limits as any of the fluid bulk modulus, crack porosity, and/or frequency is reduced to zero. It is shown that squirt flow is incapable of explaining the measured level of loss (10-2 < Q-1 < 10-1) within the seismic band of frequencies (1 to 104 Hz); however, either of the two mesoscopic scale models easily produce enough attenuation to explain the field data.